XML-RPC — это протокол, позволяющий удалённо взаимодействовать с сайтом на WordPress. Он используется для публикации записей, управления сайтами через мобильные приложения и некоторые плагины. Однако XML-RPC часто становится причиной уязвимостей и атак, таких как перебор паролей или DDoS. В этой статье разберём, как правильно отключить XML-RPC в WordPress, какие есть варианты и примеры кода для этого.
Что такое XML-RPC и почему его отключают
XML-RPC — это механизм удалённого вызова функций, изначально сделанный для удобного управления WordPress с внешних приложений. Однако в последние годы он стал причиной множества угроз:
- Атаки перебором паролей (Brute Force) через метод
system.multicall, позволяющий за один запрос пытаться множество входов. - Использование XML-RPC для распределённых атак (DDoS).
- Некоторые боты и сканеры ищут уязвимости именно через XML-RPC.
Если вы не используете мобильные приложения для публикации или внешние сервисы, которые полагаются на XML-RPC, то отключение этого протокола значительно повысит безопасность сайта.
Способы отключения XML-RPC в WordPress
Существует несколько простых способов отключить XML-RPC. Рассмотрим их по порядку, с примерами кода.
1. Отключение через functions.php темы
Можно добавить фильтр, который запретит работу XML-RPC:
function wplab_disable_xmlrpc() {
return false;
}
add_filter('xmlrpc_enabled', 'wplab_disable_xmlrpc');Этот способ самый простой. Он отключает весь функционал XML-RPC на уровне ядра WordPress. Добавьте код в файл functions.php вашей активной темы или в файл кастомного плагина.
2. Отключение доступа через .htaccess
Если у вас Apache, то можно запретить доступ к xmlrpc.php через веб-сервер:
# Запрет доступа к xmlrpc.php
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>Этот метод блокирует все входящие запросы к xmlrpc.php ещё на уровне сервера, что снижает нагрузку и исключает возможность использования XML-RPC.
3. Использование плагинов для отключения XML-RPC
Если вы предпочитаете готовые решения, то можно использовать плагины:
- Clearfy Pro — многофункциональный плагин для оптимизации и безопасности WordPress, включая возможность отключения XML-RPC одним кликом.
- Disable XML-RPC — простой бесплатный плагин, который полностью отключает xmlrpc.php.
Использование плагинов удобно, если вы не хотите править код вручную, а также если необходимо быстро включать или отключать функции.
Дополнительные рекомендации по безопасности XML-RPC
Если вы всё же пользуетесь XML-RPC, но хотите ограничить риски, можно настроить:
- Ограничение доступа к xmlrpc.php по IP через .htaccess или firewall, если вы знаете IP внешних сервисов.
- Отключение метода
system.multicall, который часто используют для атак перебором.
Пример отключения system.multicall в WordPress
Добавьте следующий код в functions.php:
function wplab_disable_xmlrpc_multicall( $methods ) {
if ( isset( $methods['system.multicall'] ) ) {
unset( $methods['system.multicall'] );
}
return $methods;
}
add_filter( 'xmlrpc_methods', 'wplab_disable_xmlrpc_multicall' );Этот код оставляет работу XML-RPC, но запрещает опасный метод, который используют злоумышленники для массовых попыток входа.
Как проверить, работает ли XML-RPC на вашем сайте
Для проверки можно использовать онлайн-сервисы, например, xmlrpc.eritreo.it. Введите URL вашего сайта и проверьте статус.
Также можно проверить вручную, отправив POST-запрос на https://ваш-сайт.ru/xmlrpc.php. Если ответ содержит XML-RPC server accepts POST requests only. или похожий, значит XML-RPC доступен.
Заключение: какой способ выбрать для отключения XML-RPC
Если вы не используете XML-RPC, лучше всего полностью его отключить через фильтр в WordPress или блокировку .htaccess. Для большинства сайтов достаточно первого способа — добавления фильтра xmlrpc_enabled.
Если используете мобильные приложения или другие сервисы, рассмотрите вариант с отключением только опасных методов или ограничением доступа по IP.
Для комплексной защиты и оптимизации сайта советую обратить внимание на Clearfy Pro. Этот плагин поможет не только с XML-RPC, но и с другими настройками безопасности и производительности.