Как запретить доступ к конкретному REST API запросу для WordPress

Если вам не требуется полностью закрыть доступ к REST на вашем сайте, а нужно лишь обезопасить его, можно ограничить доступ к конкретному END Point.

Важно помнить: Отключение сервисов API может повлиять на работу плагинов и тем, которые используют этот API. Тщательно протестируйте любые изменения в непроизводственной среде, прежде чем внедрять их на рабочем сайте.

Первый вариант:

1. Отключение всего API пользователей:

Для этого добавьте в functions.php вашей темы следующий код:

Не забудьте проверить закрывающие и открывающие тэги <?php  / ?>

Этот код перехватывает список конечных точек REST API и удаляет конечные точки /wp/v2/users и /wp/v2/users/{id}. Обратите внимание, что это повлияет на всех пользователей, включая администраторов.

Я не рекомендую править файлы темы, вместо этого просто добавьте свой плагин, который будет неизменно подключаться к любой вашей теме и не будет зависеть от обновлений. Это займет 10 минут, но сэкономит кучу времени.

2. Ограничение доступа к API пользователей на основе ролей пользователей:

Более гибкий подход, позволяющий ограничить доступ к API только для определенных ролей пользователей.

  • Через functions.php или плагин:

Этот код перехватывает каждый запрос REST API и проверяет, содержит ли маршрут /wp/v2/users.

Если содержит, проверяет, имеет ли текущий пользователь роль администратора. Если нет, возвращается ошибка rest_forbidden.

Вы можете изменить current_user_can( 'administrator' ) для проверки других ролей пользователей, таких как editorauthorcontributor или subscriber.

 

3. Ограничение доступа к API пользователей на основе IP-адреса:

Этот подход ограничивает доступ к API только для определенных IP-адресов. Имейте в виду, что это может быть сложно, особенно если у вас динамический IP-адрес.

  • Через functions.php или плагин:

Этот код проверяет IP-адрес пользователя и сравнивает его со списком разрешенных IP-адресов. Если IP-адрес не находится в списке, возвращается ошибка rest_forbidden.

 

4. Использование плагина:

Существуют плагины, которые могут помочь вам управлять доступом к REST API, включая API пользователей. Некоторые популярные варианты:

  • Disable REST API: Просто отключает весь REST API, включая API пользователей.
  • REST API Toolbox: Предлагает более детальный контроль над различными аспектами REST API, включая возможность отключать определенные конечные точки.
  • Advanced Access Manager (AAM): Мощный плагин для управления ролями и возможностями пользователей, который также может использоваться для контроля доступа к REST API.

Рекомендации по ограничению:

  • Не рубите с плеча ) : Вместо того, чтобы сразу отключать всё и вся, попробуйте ограничить доступ на основе ролей пользователей или IP-адресов.
  • Тщательно протестируйте: Проверьте все изменения, чтобы убедиться, что они не влияют на функциональность вашего сайта.
  • Документируйте свои изменения: Оставьте комментарии в коде или в блокноте, объясняющие, почему вы отключили или ограничили доступ, как и когда, это поможет, в случае, если придётся откатить изменения.
  • Подумайте о последствиях: Отключение API пользователей может повлиять на работу плагинов и тем, которые используют этот API.

Почему нужно ограничивать доступ к API пользователей?

  • Безопасность: Предоставление открытого доступа к информации о пользователях может быть рискованным, особенно если в ней есть конфиденциальные данные.
  • Производительность: Ограничение количества запросов к API пользователей может помочь улучшить производительность вашего сайта.
  • Защита от нежелательной активности: Отключение или ограничение доступа к API пользователей может помочь предотвратить нежелательную активность, такую как спам-регистрации и перебор учетных данных.

Оставьте комментарий

*