Я хотел бы начать использовать WordPress REST API v2 для запроса информации с моего сайта. Я заметил, что когда я посещаю URL-адрес конечной точки напрямую, я могу видеть все данные публично. Я также видел, что во многих руководствах упоминается использование тестовых или локальных серверов, а не живых сайтов.
Мои вопросы:
- Это предназначено для использования на сайтах в производстве?
- Существует ли угроза безопасности для разрешения просмотра конечных точек кем-либо, например, когда
/wp-json/wp/v2/users/
отображаются все пользователи, зарегистрированные на сайте? - Можно ли разрешить только авторизованным пользователям доступ к конечной точке?
Я хочу убедиться, что я следую рекомендациям по безопасности, поэтому любые советы будут полезны. В документации API упоминается аутентификация, но я не уверен, как предотвратить прямой доступ к URL. Как другие обычно настраивают доступ к этим данным для внешних приложений, не раскрывая слишком много информации?
Ответы:
Да. Многие сайты уже используют его .
Нет. Ответы сервера не имеют ничего общего с безопасностью, что вы можете сделать с пустым экраном / доступом только для чтения? Ничего!
Однако, если на ваших сайтах разрешены слабые пароли, возникают некоторые проблемы . Но это политика ваших сайтов, REST API ничего об этом не знает.
Да. Вы можете сделать это с помощью разрешения обратного вызова .
Например:
На этот вопрос сложно ответить, потому что мы не знаем, что / когда слишком много информации . Но мы все используем ссылки и читы .
источник
/wp-json/wp/v2/users/
. (Ссылка wordpress.stackexchange.com/q/252328/41488 @JHoffmann comment)Можно добавить настраиваемый обратный вызов разрешений для вашей конечной точки API, который требует проверки подлинности для просмотра содержимого. Неавторизованные пользователи получат ответ об ошибке
"code": "rest_forbidden"
Самый простой способ сделать это - расширить WP_REST_Posts_Controller. Вот очень простой пример этого:
Вы заметите, что обратный вызов разрешений
function get_items_permissions_check
использует,current_user_can
чтобы определить, разрешить ли доступ. В зависимости от того, как вы используете API, вам может потребоваться больше узнать об аутентификации клиента.Затем вы можете зарегистрировать свой собственный тип записи с поддержкой REST API, добавив следующие аргументы в
register_post_type
Вы увидите
rest_controller_class
использованиеMy_Private_Posts_Controller
вместо контроллера по умолчанию.Мне было трудно найти хорошие примеры и объяснения для использования REST API вне документации . Я нашел это отличное объяснение расширения контроллера по умолчанию , и вот очень подробное руководство по добавлению конечных точек .
источник
Вот то, что я использовал, чтобы заблокировать всех незарегистрированных пользователей от использования REST API:
источник
источник