XML-RPC в WordPress — это протокол, который позволяет удалённо взаимодействовать с сайтом, например, публиковать записи через внешние приложения или мобильные клиенты. Однако он часто становится причиной проблем с безопасностью и производительностью, так как через него могут проходить атаки перебора паролей, DDoS и другие угрозы. В этой статье подробно рассмотрим, как удалить или отключить XML-RPC в WordPress, чтобы повысить безопасность и снизить нагрузку, а также приведём несколько проверенных способов с примерами кода.
Что такое XML-RPC и почему его отключают (ключевые слова: безопасность WordPress, отключение xmlrpc)
XML-RPC — это интерфейс, встроенный в ядро WordPress, который позволяет внешним приложениям взаимодействовать с сайтом через HTTP-запросы в формате XML. Он используется для удалённого управления контентом: публикации постов, редактирования, загрузки медиа и многого другого.
Несмотря на полезность, XML-RPC часто становится уязвимостью. Злоумышленники могут использовать протокол для перебора паролей (brute force), проведения DDoS-атак и обхода стандартных механизмов защиты. Кроме того, многие сайты не используют XML-RPC и не нуждаются в этом функционале, поэтому отключение сервиса снижает потенциальные риски.
Если у вас на сайте нет мобильных приложений или внешних сервисов, которые требуют XML-RPC, рекомендуется отключить или ограничить его.
Способы отключения XML-RPC в WordPress (ключевые слова: отключить xmlrpc, удалить xmlrpc.php)
Существует несколько способов отключить XML-RPC в WordPress. Рассмотрим основные и наиболее безопасные варианты.
Отключение через functions.php темы
Самый простой способ — добавить в файл functions.php активной темы следующий код, который полностью отключит обработку XML-RPC-запросов:
function wpall_disable_xmlrpc() {
add_filter('xmlrpc_enabled', '__return_false');
}
add_action('init', 'wpall_disable_xmlrpc');
Этот код использует встроенный фильтр xmlrpc_enabled, который возвращает false, тем самым отключая все XML-RPC запросы на уровне ядра WordPress.
Блокировка доступа к xmlrpc.php через .htaccess
Если у вас сайт на Apache, можно запретить доступ к файлу xmlrpc.php через конфигурацию сервера, добавив в корневой .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 с помощью плагина Clearfy Pro
Если вы используете плагин Clearfy Pro, то отключение XML-RPC можно сделать в пару кликов без кода. Плагин предлагает удобный интерфейс для управления функциями безопасности и оптимизации WordPress, включая быстрое выключение XML-RPC.
Проверка отключения XML-RPC и дополнительные советы (ключевые слова: проверить отключение xmlrpc, безопасность WordPress)
После отключения XML-RPC важно проверить, что протокол действительно недоступен. Для этого можно воспользоваться онлайн-сервисами, например, XML-RPC Validator, или отправить тестовый запрос с помощью curl:
curl -d '' https://ваш-сайт.ru/xmlrpc.php
Если отключение прошло успешно, сервер должен вернуть ошибку или пустой ответ.
Также рекомендуется:
- Проверять логи сервера на предмет попыток доступа к
xmlrpc.phpи блокировать IP с подозрительной активностью. - Использовать плагины безопасности, которые умеют фильтровать и ограничивать XML-RPC, например, Wordfence.
- Регулярно обновлять WordPress и плагины для защиты от известных уязвимостей.
Пример кастомной функции отключения XML-RPC на wpall.ru (ключевые слова: кастомный код отключения xmlrpc)
Если нужен более точечный контроль, можно написать функцию, которая отключает только определённые методы XML-RPC, оставляя другие:
function wpall_filter_xmlrpc_methods( $methods ) {
unset( $methods['pingback.ping'] ); // Отключаем пингбэки
unset( $methods['wp.getUsersBlogs'] ); // Отключаем получение информации о блогах
return $methods;
}
add_filter( 'xmlrpc_methods', 'wpall_filter_xmlrpc_methods' );
Такой подход полезен, если вы хотите сохранить базовую функциональность, но убрать уязвимые методы.