Как отключить XML-RPC в WordPress только для неавторизованных пользователей

Почему нужно ограничивать доступ к XML-RPC

XML-RPC — это протокол, который позволяет удалённо взаимодействовать с сайтом WordPress, например, через мобильные приложения, внешние сервисы или плагины. Однако именно через XML-RPC часто происходят атаки типа Brute Force и DDoS, если доступ открыт для всех.

Полное отключение XML-RPC может нарушить работу легитимных сервисов, поэтому иногда нужно отключать его только для неавторизованных пользователей, оставляя доступ для админов и доверенных аккаунтов.

Диагностика: как проверить, активен ли XML-RPC и кто его использует

  • Откройте https://yourdomain.com/xmlrpc.php в браузере. Если видите сообщение «XML-RPC server accepts POST requests only.», сервис активен.
  • Проанализируйте логи сервера, например access.log, на предмет частых POST-запросов к /xmlrpc.php от неавторизованных IP.
  • Используйте WP Security Audit Log или аналогичные плагины для отслеживания успешных и неудачных вызовов через XML-RPC.

Пошаговое решение: отключение XML-RPC для гостей с помощью кода

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

add_filter('xmlrpc_enabled', function($enabled) {
    if (!is_user_logged_in()) {
        return false; // Отключаем XML-RPC для неавторизованных
    }
    return $enabled; // Разрешаем для авторизованных
});

Этот фильтр отключит XML-RPC, если пользователь не вошёл в систему. Он не затронет админов или других авторизованных пользователей.

Альтернативный способ — блокировка через .htaccess

Если хотите ограничить доступ на уровне сервера, но разрешить авторизованным, это сложнее. Однако можно заблокировать большую часть внешних запросов:

# Блокировать xmlrpc.php для всех кроме определённых IP
<Files xmlrpc.php>
    Order Deny,Allow
    Deny from all
    Allow from 123.123.123.123 # IP администратора
</Files>

Минус — IP администратора должен быть статичным, иначе доступ будет затруднён.

Проверка результата после внедрения

  • Попробуйте выполнить POST-запрос к /xmlrpc.php неавторизованным пользователем — должен вернуть ошибку или 403.
  • Войдите в WordPress под админом и проверьте работу мобильного приложения или плагина, использующего XML-RPC — функционал должен работать.
  • Проверьте логи сервера — количество подозрительных запросов к /xmlrpc.php должно снизиться.

Частые ошибки и как их исправить

  • Ошибка: Полностью отключили XML-RPC, нарушив работу плагинов или мобильного приложения.
    Решение: используйте фильтр xmlrpc_enabled, а не полное удаление файла.
  • Ошибка: Блокировка через .htaccess не учитывает динамические IP.
    Решение: используйте код в WordPress, где можно проверить авторизацию без привязки к IP.
  • Ошибка: После внесения кода появились ошибки PHP.
    Решение: убедитесь, что код добавлен корректно, и нет синтаксических ошибок.

Практические советы по безопасности и производительности

  • Не отключайте XML-RPC полностью, если используете Jetpack, мобильное приложение или другие сервисы, зависящие от него.
  • Комбинируйте фильтр xmlrpc_enabled с плагинами для ограничения количества запросов и блокировки по IP.
  • Используйте HTTPS для шифрования данных при работе с XML-RPC.
  • Регулярно обновляйте WordPress и плагины для исправления уязвимостей.

Сравнение способов ограничения XML-RPC

МетодПлюсыМинусы
Фильтр xmlrpc_enabled в functions.phpТонкий контроль, работает для авторизованныхТребует доступа к коду, не блокирует IP
Блокировка через .htaccessБлокирует на уровне сервера, быстроНе подходит для динамических IP, может заблокировать легитимных
Полное отключение плагином (например, Disable XML-RPC)Простота, не требует кодаМожет нарушить работу сервисов, нет гибкости
Как удалить блокировку входа после Limit Login Attempts в WordPress
03.06.2026
Как изменить и расписать собственный логин в WordPress без плагинов
18.02.2026
Как создать свой плагин для изменения формы входа в WordPress
03.12.2025
Как защитить WordPress от взлома и автоматических атак
07.11.2025
Как добавить защиту reCAPTCHA на страницу входа в WordPress
23.01.2026

wp-login.php - это страница входа в системе управления вордпресс. Если Вы хотите изменить внешний вид страницы входа - читайте здесь. Если вам нужно защитить админку - подробный мануал. Вы можете установить плагин Clearfy, в котором есть функция защиты админки и страницы входа.