XML-RPC — это протокол, который позволяет удалённо взаимодействовать с сайтом WordPress, например, через мобильные приложения или внешние сервисы. Но в то же время XML-RPC часто становится причиной уязвимостей и векторов атак, таких как перебор паролей (Brute Force) и DDoS-атаки. Поэтому многие владельцы сайтов хотят отключить или полностью удалить поддержку XML-RPC для повышения безопасности.
Что такое XML-RPC и зачем его отключать
XML-RPC был введён в WordPress для поддержки удалённого взаимодействия с сайтом. Он позволяет:
- Публиковать записи из внешних приложений;
- Управлять комментариями и контентом;
- Использовать мобильные клиенты и десктопные редакторы.
Однако, в современных реалиях многие сайты не используют эту функциональность, а сам протокол часто становится целью злоумышленников. Поэтому отключение XML-RPC помогает:
- Снизить риск перебора паролей, так как XML-RPC допускает многократные попытки авторизации;
- Уменьшить нагрузку на сервер от нежелательных запросов;
- Повысить общую безопасность сайта.
Как проверить, активен ли XML-RPC на вашем сайте WordPress
XML-RPC по умолчанию доступен по адресу https://ваш-сайт.ru/xmlrpc.php. Чтобы проверить, работает ли он, можно просто открыть этот URL в браузере или выполнить curl-запрос:
curl -I https://ваш-сайт.ru/xmlrpc.phpЕсли в ответе приходит статус 200 и в теле есть XML, значит, протокол активен. Если приходит 403 или 404, значит, он отключен или заблокирован.
Способы отключения XML-RPC в WordPress
Отключение через файл functions.php темы
Самый простой способ — добавить в functions.php вашей активной темы следующий код, который отключит обработку запросов XML-RPC:
function clearfy_disable_xmlrpc() {
add_filter('xmlrpc_enabled', '__return_false');
}
add_action('init', 'clearfy_disable_xmlrpc');Этот код использует встроенный фильтр WordPress xmlrpc_enabled, который возвращает false, отключая поддержку XML-RPC.
Полное блокирование доступа через .htaccess
Если ваш сайт работает на Apache, можно полностью запретить доступ к xmlrpc.php на уровне веб-сервера. Для этого добавьте в .htaccess корневой директории сайта следующий код:
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>Этот способ гарантирует, что любые запросы к xmlrpc.php будут блокированы ещё до попадания в WordPress.
Отключение через плагины безопасности
Многие популярные плагины безопасности для WordPress имеют функцию отключения XML-RPC. Например:
- Wordfence Security — в настройках есть опция блокировки XML-RPC;
- iThemes Security — позволяет отключить или ограничить доступ;
- Disable XML-RPC — специализированный плагин, который отключает XML-RPC одним кликом.
Использование плагинов удобно, если вы не хотите править код или .htaccess вручную.
Как в Clearfy отключить XML-RPC с помощью собственного кода
Если вы хотите интегрировать отключение XML-RPC в свой плагин или тему, можно оформить код с префиксом clearfy_ для удобства поддержки:
function clearfy_disable_xmlrpc() {
add_filter('xmlrpc_enabled', '__return_false');
}
add_action('init', 'clearfy_disable_xmlrpc');Добавьте эту функцию в файл вашего плагина или functions.php. Это позволит быстро и безопасно отключить XML-RPC без сторонних плагинов.
Проверка отключения и тестирование
После внесения изменений обязательно проверьте, что XML-RPC действительно отключён. Для этого:
- Попробуйте открыть
https://ваш-сайт.ru/xmlrpc.phpв браузере — должна быть ошибка 403 или 404; - Используйте curl или другие инструменты для отправки XML-RPC-запросов — они должны блокироваться;
- Просмотрите логи сервера, чтобы убедиться, что запросы не доходят или отклоняются.
Если вы используете мобильные приложения WordPress или внешние сервисы, которые зависят от XML-RPC, учтите, что после отключения они перестанут работать.
Альтернативные методы удалённого управления сайтом
Если вам всё же нужно удалённое управление сайтом, но без уязвимостей XML-RPC, рассмотрите современные REST API WordPress. Он более безопасен и гибок. Для работы с REST API можно использовать OAuth или другие методы аутентификации, а также создавать собственные эндпоинты.
Для примера добавим простой REST API эндпоинт с префиксом clearfy_:
add_action('rest_api_init', function () {
register_rest_route('clearfy/v1', '/hello', array(
'methods' => 'GET',
'callback' => 'clearfy_rest_hello',
));
});
function clearfy_rest_hello() {
return 'Привет от Clearfy REST API!';
}Этот эндпоинт доступен по адресу /wp-json/clearfy/v1/hello и возвращает простое текстовое сообщение.
Заключение: что выбрать — отключение или ограничение XML-RPC
Если XML-RPC не используется на вашем сайте, лучше всего полностью его отключить — это повысит безопасность и снизит нагрузку. Отключение можно сделать с помощью кода, .htaccess или плагинов. Если же нужно сохранить функционал, рассмотрите ограничение доступа по IP или использование современных API.
В любом случае, следите за безопасностью своего сайта и регулярно обновляйте WordPress и плагины.