XML-RPC — это протокол, который используется WordPress для удалённого взаимодействия, например, для публикации постов через мобильные приложения или внешние сервисы. Однако он часто становится причиной множества атак, таких как перебор паролей и DDoS, что негативно сказывается на безопасности и производительности сайта.
Зачем отключать XML-RPC: риски и проблемы безопасности
По умолчанию XML-RPC включён в WordPress и доступен по адресу your-site.com/xmlrpc.php. Он позволяет выполнять удалённые вызовы функций, что удобно, но одновременно открывает дополнительные векторы атак.
Основные угрозы при включённом XML-RPC:
- Brute force атаки на учетные записи через метод
system.multicall— злоумышленники могут пробовать множество паролей за один запрос. - DDoS-атаки — чрезмерная нагрузка на сервер из-за большого количества запросов к XML-RPC.
- Использование уязвимостей в плагинах или ядре через XML-RPC для выполнения произвольного кода.
Поэтому, если вы не используете внешние приложения, которые требуют XML-RPC, лучше отключить этот функционал.
Как автоматически отключить XML-RPC через functions.php
Самый простой способ — добавить код в файл functions.php вашей темы или в отдельный плагин. Мы создадим функцию wpfront_disable_xmlrpc, которая будет блокировать все запросы к xmlrpc.php.
function wpfront_disable_xmlrpc() {
if (strpos($_SERVER['REQUEST_URI'], 'xmlrpc.php') !== false) {
wp_die('Доступ к XML-RPC запрещён.', 'XML-RPC отключён', array('response' => 403));
}
}
add_action('init', 'wpfront_disable_xmlrpc');Этот код проверяет, если URI запроса содержит xmlrpc.php, — останавливает выполнение и выводит сообщение об ошибке 403.
Преимущества способа
- Легко внедрить — достаточно вставить в functions.php.
- Не требует установки плагинов.
- Работает сразу после активации.
Недостатки
- Если вы используете приложения или сервисы, которые работают через XML-RPC (например, Jetpack, мобильное приложение WordPress), они перестанут работать.
Отключение XML-RPC с помощью плагинов — обзор и рекомендации
Если вы предпочитаете не править код сайта напрямую, можно установить специализированные плагины из репозитория WordPress.
Плагин Disable XML-RPC
Очень простой плагин, который отключает все запросы к XML-RPC. После активации больше ничего не нужно настраивать.
Скачать и установить можно здесь: Disable XML-RPC
Плагин Clearfy Pro
Если вы используете Clearfy Pro, там есть возможность отключить XML-RPC в разделе настроек безопасности. Это удобно, если вы уже используете этот плагин для оптимизации и защиты сайта.
Как проверить, отключён ли XML-RPC
Чтобы убедиться, что XML-RPC отключён, можно выполнить несколько простых шагов.
Через браузер или curl
Попробуйте открыть в браузере https://your-site.com/xmlrpc.php. Если видите сообщение типа "Доступ к XML-RPC запрещён" или ошибку 403, значит, отключение сработало.
Также можно выполнить команду в терминале:
curl -I https://your-site.com/xmlrpc.phpВ ответе должен быть статус 403 или 404.
Проверка через онлайн-сервисы
Существуют онлайн-инструменты, которые проверяют доступность XML-RPC на сайте, например, xmlrpc.eritreo.it. Просто введите URL вашего сайта и проанализируйте результаты.
Альтернативы XML-RPC для удалённого управления WordPress
Если вам нужна функциональность удалённого управления сайтом, но XML-RPC отключён, рассмотрите альтернативные варианты.
REST API WordPress
Современный и более безопасный способ взаимодействия с сайтом — REST API. Он поддерживается WordPress с версии 4.7 и позволяет выполнять практически все операции, которые раньше были возможны через XML-RPC.
Пример запроса для получения списка постов через REST API:
fetch('https://your-site.com/wp-json/wp/v2/posts')
.then(response => response.json())
.then(data => console.log(data));REST API более гибкий и позволяет настроить аутентификацию и права доступа гораздо удобнее.
Плагины для управления сайтом
Для удалённого управления можно использовать такие плагины, как WPCommunity или WPRemark, которые добавляют возможности взаимодействия с пользователями и администраторами без необходимости использования XML-RPC.
Подытожим: что делать для автоматического отключения XML-RPC
Для автоматического отключения XML-RPC на сайте WordPress достаточно добавить функцию wpfront_disable_xmlrpc в functions.php или использовать плагин Disable XML-RPC. Если вы предпочитаете комплексное решение, обратите внимание на Clearfy Pro.
Также стоит рассмотреть переход на REST API для безопасного удалённого управления сайтом.