XML-RPC — это протокол, встроенный в WordPress, который позволяет удалённо взаимодействовать с сайтом: публиковать записи, управлять комментариями, использовать мобильные приложения и ряд других функций. Однако он часто становится причиной уязвимостей, так как используется злоумышленниками для проведения атак типа brute force и DDoS.
Что такое XML-RPC и зачем его отключать
XML-RPC поддерживает удалённый доступ к сайту через API, что удобно для разработчиков и мобильных приложений. Но если вы не используете внешние приложения для работы с сайтом, отключение XML-RPC поможет значительно снизить риски взлома и снизит нагрузку на сервер.
Частые проблемы с XML-RPC включают:
- Атаки brute force — злоумышленники пытаются подобрать пароли, используя xmlrpc.php
- DDoS-атаки через многократные запросы к этому файлу
- Использование уязвимостей в плагинах через XML-RPC методы
Именно поэтому важно понимать, как отключить эту функциональность в WordPress.
Как проверить, активен ли XML-RPC на вашем сайте
Чтобы проверить, включён ли XML-RPC, достаточно открыть в браузере URL https://ваш_сайт.ru/xmlrpc.php. Если вы увидите ответ XML-RPC server accepts POST requests only., значит, сервис активен.
Также можно сделать тестовый POST-запрос с помощью curl:
curl -d '' https://ваш_сайт.ru/xmlrpc.phpЕсли в ответ придет ошибка, значит файл доступен. Если сервер вернёт 403 или 404, то XML-RPC отключен или заблокирован.
Способы отключения XML-RPC в WordPress
1. Отключение через functions.php
Самый простой и безопасный способ — добавить фильтр, который запретит доступ к XML-RPC:
function wp8_disable_xmlrpc() {
return false;
}
add_filter('xmlrpc_enabled', 'wp8_disable_xmlrpc');Этот код нужно добавить в файл functions.php вашей активной темы или в плагин для кастомных функций. После этого WordPress перестанет обрабатывать xmlrpc.php.
2. Блокировка через .htaccess
Если ваш сайт работает на Apache, можно заблокировать доступ к xmlrpc.php на уровне веб-сервера. Для этого добавьте в файл .htaccess корня сайта следующий код:
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>Этот метод полностью запрещает доступ к файлу, что надежно защитит сайт, но при этом исключит любые легитимные запросы через XML-RPC.
3. Использование плагинов
Если вы предпочитаете не трогать код, можно использовать плагины для отключения XML-RPC:
- Disable XML-RPC — простой и легковесный плагин, полностью отключающий XML-RPC.
- Clearfy — мощный плагин для оптимизации и безопасности, в котором есть опция отключения XML-RPC.
Для установки плагина используйте стандартную процедуру через админку WordPress или скачайте с WPSHOP.
Пример реализации функции отключения XML-RPC с логированием попыток доступа
Если вы хотите не просто отключить XML-RPC, а ещё и отслеживать попытки к нему обращаться, можно расширить код так:
function wp8_disable_xmlrpc_with_log() {
if (defined('XMLRPC_REQUEST') && XMLRPC_REQUEST) {
error_log('Попытка обращения к XML-RPC: ' . $_SERVER['REMOTE_ADDR']);
wp_die('Доступ к XML-RPC запрещён.');
}
}
add_action('init', 'wp8_disable_xmlrpc_with_log');Этот код проверяет, если запрос — XML-RPC, то он записывает IP адрес в лог и останавливает выполнение с сообщением.
Что делать, если XML-RPC нужен для приложений
Если вы используете мобильные приложения или внешние сервисы, которые требуют XML-RPC, можно ограничить доступ к нему только с определённых IP или по другим параметрам. Например, через .htaccess разрешить доступ только с IP вашего сервера или офиса:
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
Allow from 123.123.123.123
</Files>Где 123.123.123.123 — IP, которому разрешён доступ.
Заключение
Отключение XML-RPC — простая и эффективная мера безопасности для большинства сайтов на WordPress, особенно если вы не используете внешние приложения. Выбор способа зависит от уровня доступа и требований к функциональности сайта.
Если хотите более продвинутую оптимизацию и безопасность, обратите внимание на плагин Clearfy Pro, который поможет отключить XML-RPC и решить множество других задач по оптимизации сайта.