XML-RPC — это протокол, который позволяет удалённо управлять сайтом WordPress, например, публиковать записи через внешние приложения или мобильные клиенты. Однако, несмотря на полезность, XML-RPC часто становится причиной проблем с безопасностью и производительностью сайта. В этой статье подробно рассмотрим, зачем отключать XML-RPC, как это сделать с помощью кода и плагинов, а также рассмотрим альтернативы и советы по безопасному использованию.
Что такое XML-RPC и почему его отключают
XML-RPC — это интерфейс удалённого вызова процедур, встроенный в WordPress с версии 3.5. Он позволяет приложениям и сервисам взаимодействовать с сайтом, например, публиковать записи, редактировать комментарии и получать данные.
С одной стороны, это удобно для мобильных приложений и некоторых плагинов, с другой — XML-RPC часто используется злоумышленниками для:
- Атаки типа brute force — подбор паролей через метод
system.multicall; - Увеличения нагрузки на сервер с помощью DDoS-атак;
- Обхода ограничений безопасности, установленных в админке.
Если вы не используете внешние приложения, которые требуют XML-RPC, лучше отключить этот интерфейс для повышения безопасности и снижения нагрузки.
Как отключить XML-RPC с помощью кода в functions.php
Самый простой способ — добавить фильтр, который полностью отключит обработку XML-RPC запросов. Для этого откройте файл functions.php вашей темы или лучше создайте небольшой плагин с таким кодом:
function wpkit_disable_xmlrpc() {
return false;
}
add_filter('xmlrpc_enabled', 'wpkit_disable_xmlrpc');
Этот код возвращает false фильтру xmlrpc_enabled, что полностью отключает функционал XML-RPC.
Если вы хотите более жестко блокировать запросы, можно добавить перехват на уровне HTTP-запросов:
function wpkit_block_xmlrpc_requests() {
if (defined('XMLRPC_REQUEST') && XMLRPC_REQUEST) {
wp_die('Доступ к XML-RPC запрещён.');
}
}
add_action('init', 'wpkit_block_xmlrpc_requests');
Этот вариант покажет ошибку при попытке обращения к xmlrpc.php.
Отключение XML-RPC через .htaccess
Чтобы снизить нагрузку на сервер, можно вовсе заблокировать доступ к xmlrpc.php на уровне веб-сервера Apache. Для этого добавьте в корневой .htaccess сайта следующий код:
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
Для Nginx настройка будет выглядеть так:
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}
Этот метод блокирует любые запросы к XML-RPC на уровне сервера, что эффективно снижает нагрузку и предотвращает атаки.
Использование плагинов для управления XML-RPC
Если вы предпочитаете готовые решения, рассмотрите плагины, которые помогут отключить или ограничить XML-RPC:
- Clearfy Pro — в этом популярном плагине есть модуль для отключения XML-RPC, а также других неиспользуемых функций WordPress для повышения безопасности. Подробнее на https://wpshop.ru/plugins/clearfy-pro/
- Disable XML-RPC — простой плагин, который отключает этот протокол без настроек.
- Wordfence Security — комплексный плагин безопасности, который позволяет блокировать подозрительные XML-RPC-запросы.
Как оставить XML-RPC включённым, но обезопасить сайт
Иногда полный отказ от XML-RPC невозможен, если вы используете мобильные приложения или интеграции с внешними сервисами. В этом случае стоит ограничить доступ и защитить интерфейс:
- Ограничьте доступ по IP — если вы знаете IP-адреса клиентов, которым нужен доступ, заблокируйте остальные через .htaccess или брандмауэр.
- Отключите метод system.multicall — именно через него чаще всего проводится brute force атака.
- Используйте двухфакторную аутентификацию для всех пользователей с правами администратора.
Пример кода для отключения system.multicall:
function wpkit_disable_multicall($methods) {
if (isset($methods['system.multicall'])) {
unset($methods['system.multicall']);
}
return $methods;
}
add_filter('xmlrpc_methods', 'wpkit_disable_multicall');
Проверка, отключён ли XML-RPC
Чтобы проверить, доступен ли XML-RPC, можно выполнить простой curl-запрос из командной строки:
curl -I https://ваш_сайт.ru/xmlrpc.php
Если ответ 405 Method Not Allowed или 403 Forbidden — значит доступ заблокирован. Если 200 OK — протокол включён.
Заключение
Отключение XML-RPC — простой и эффективный способ повысить безопасность WordPress-сайта и снизить нагрузку на сервер. В большинстве случаев, если вы не используете мобильные приложения или внешние сервисы, лучше отключить его полностью с помощью кода или плагинов. Если же протокол необходим, применяйте меры по ограничению доступа и защите.
Для удобного управления безопасностью и оптимизации советуем обратить внимание на Clearfy Pro — мощный инструмент с множеством полезных функций.