XML-RPC в WordPress — это протокол, который позволяет сторонним приложениям и сервисам взаимодействовать с сайтом, например, для публикации записей через мобильные приложения или удалённого управления. Однако часто XML-RPC становится причиной проблем с безопасностью, такими как DDoS-атаки, брутфорс или избыточная нагрузка на сервер. В этой статье подробно рассмотрим, как отключить или ограничить XML-RPC в WordPress, а также примеры кода и готовые решения.
Что такое XML-RPC и зачем его отключать
XML-RPC — это API, который изначально был создан для удалённого доступа к WordPress. Он используется, например, в Jetpack, мобильных приложениях WordPress и некоторых плагинах. Но в большинстве случаев, если вы не используете такие функции, XML-RPC только увеличивает риски безопасности.
Чаще всего злоумышленники используют XML-RPC для:
- массового перебора паролей (brute force);
- атак типа pingback DDoS;
- использования сайта в ботнетах для атак на другие ресурсы.
Если вы не нуждаетесь в удалённом управлении через XML-RPC, лучше отключить этот функционал.
Способы отключения XML-RPC в WordPress
Выделим несколько основных вариантов отключения XML-RPC, от простых до более технических.
Отключение через functions.php — wpstock_disable_xmlrpc
Самый простой способ — добавить небольшой код в файл functions.php вашей темы или в плагин для пользовательских функций. Это запретит весь доступ к XML-RPC.
function wpstock_disable_xmlrpc() {
add_filter('xmlrpc_enabled', '__return_false');
}
add_action('init', 'wpstock_disable_xmlrpc');
Этот код отключает XML-RPC API и возвращает ошибку при обращении к xmlrpc.php.
Блокировка доступа к xmlrpc.php через .htaccess
Если у вас Apache сервер, можно заблокировать доступ к файлу xmlrpc.php на уровне веб-сервера:
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
Этот метод самый надёжный и не позволяет просто так обращаться к XML-RPC. Если у вас Nginx, то нужно добавить в конфигурацию:
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}
После внесения изменений нужно перезапустить сервер.
Отключение XML-RPC с помощью плагинов
Если не хотите трогать код, используйте готовые плагины. Некоторые из них:
- Clearfy Pro — мощный инструмент для оптимизации и безопасности WordPress, с функцией отключения XML-RPC;
- Disable XML-RPC — простой плагин, который полностью отключает XML-RPC;
- Stop XML-RPC Attack — плагин, который блокирует все подозрительные запросы.
Как частично ограничить XML-RPC, а не отключать полностью
Если вы используете Jetpack или другие сервисы, которые требуют XML-RPC, но хотите ограничить доступ, можно запретить некоторые методы, оставив другие:
function wpstock_filter_xmlrpc_methods($methods) {
// Удаляем методы, которые часто используются для атак
unset($methods['pingback.ping']);
unset($methods['pingback.extensions.getPingbacks']);
return $methods;
}
add_filter('xmlrpc_methods', 'wpstock_filter_xmlrpc_methods');
Так вы сохраните базовые функции, но отключите возможность использования pingback, который часто используется для DDoS-атак.
Логирование и мониторинг XML-RPC запросов
Для отладки и анализа можно добавить логирование всех запросов к XML-RPC:
function wpstock_log_xmlrpc_requests($method) {
error_log('XML-RPC method called: ' . $method);
}
add_action('xmlrpc_call', 'wpstock_log_xmlrpc_requests');
Это поможет понять, какие именно методы вызываются и откуда идут запросы.
Проверка отключения XML-RPC
После отключения можно проверить статус XML-RPC, например, через сервисы вроде xmlrpc.eritreo.it или с помощью WP-CLI:
wget --spider https://example.ru/xmlrpc.php
Если XML-RPC отключён, вы получите ошибку 403 или 405.
Выводы по безопасности и производительности
Отключение XML-RPC помогает снизить риски взлома и уменьшить нагрузку на сервер. Особенно это актуально для сайтов с малым и средним трафиком, где нет необходимости в удалённом управлении.
Используйте простой фильтр в functions.php или блокировку через веб-сервер, если хотите максимальную защиту. Для гибкости — ограничивайте методы через фильтры. Если нужна удобная настройка без кода — обратите внимание на Clearfy Pro с поддержкой отключения XML-RPC и других полезных функций.
Таким образом, управление XML-RPC — важный элемент обеспечения безопасности WordPress и оптимизации работы сайта.