XML-RPC — это протокол, который позволяет удалённо взаимодействовать с WordPress, например, через мобильные приложения, внешние сервисы или плагин Jetpack. Несмотря на свои преимущества, XML-RPC часто становится причиной проблем с безопасностью и нагрузкой на сервер, так как используется злоумышленниками для проведения атак типа brute force или DDoS.
Что такое XML-RPC и зачем его отключать?
XML-RPC — это интерфейс удалённого вызова процедур, встроенный в WordPress по умолчанию. Он доступен на URL https://ваш-сайт.com/xmlrpc.php и позволяет выполнять множество действий, например, публиковать посты, редактировать страницы, управлять комментариями и т.д.
Однако многие сайты не используют эту функциональность, и в таком случае XML-RPC становится лишь уязвимостью. Отключение XML-RPC помогает:
- Снизить риск взлома через перебор паролей;
- Уменьшить нагрузку на сервер;
- Защитить сайт от некоторых видов DDoS-атак.
Поэтому часто возникает задача полностью отключить XML-RPC, не прибегая к плагинам, чтобы избежать излишних зависимостей и сохранить лёгкость сайта.
Способы отключения XML-RPC в WordPress
1. Отключение через functions.php темы
Самый простой и быстрый способ — добавить в файл functions.php вашей активной темы следующий код:
function wpsnippets_disable_xmlrpc() { add_filter('xmlrpc_enabled', '__return_false');}add_action('init', 'wpsnippets_disable_xmlrpc');Этот фильтр полностью отключит обработку XML-RPC запросов в WordPress. Однако обратите внимание, что если вы используете плагины, которые зависят от XML-RPC (например, Jetpack), они перестанут работать.
2. Отключение через .htaccess (для Apache)
Если ваш сервер работает на Apache, вы можете заблокировать доступ к файлу xmlrpc.php на уровне веб-сервера. Добавьте в файл .htaccess в корне сайта следующий код:
# Отключить xmlrpc.php<Files xmlrpc.php> Order Allow,Deny Deny from all</Files>Этот метод не отключает сам функционал WordPress, а просто блокирует доступ к файлу, что часто достаточно для защиты.
3. Отключение через nginx
Для серверов на nginx можно добавить в конфигурацию сайта:
location = /xmlrpc.php { deny all; access_log off; log_not_found off;}После внесения изменений перезапустите nginx.
Проверка отключения XML-RPC
Чтобы проверить, отключён ли XML-RPC, можно выполнить простой запрос:
curl -I https://ваш-сайт.com/xmlrpc.phpЕсли всё сделано правильно, вы увидите ответ с ошибкой доступа (403 или 404) либо пустой ответ, если отключили через фильтр WordPress.
Практический пример: отключение XML-RPC с уведомлением в админке
Чтобы дополнительно информировать администратора сайта об отключении XML-RPC, можно добавить уведомление в админ-панель с помощью кода в functions.php:
function wpsnippets_admin_notice_xmlrpc_disabled() { if ( !xmlrpc_enabled() ) { echo '<div class="notice notice-success is-dismissible"><p>XML-RPC успешно отключён для повышения безопасности сайта.</p></div>'; }}Далее зарегистрируем хук:
add_action('admin_notices', 'wpsnippets_admin_notice_xmlrpc_disabled');Так вы всегда будете видеть напоминание, что функция отключена.
Альтернативы и плагины для управления XML-RPC
Если по каким-то причинам вы хотите частично ограничить XML-RPC, а не отключать полностью, можно использовать плагины с гибкими настройками, например:
- Clearfy Pro — позволяет отключать XML-RPC и другие потенциально опасные функции одной кнопкой;
- Плагин Disable XML-RPC — простой инструмент для отключения без кода;
- Использовать файрволы (например, Wordfence), которые блокируют подозрительные запросы к XML-RPC.
Однако для полной свободы и минимальной нагрузки лучше использовать именно кодовые решения.
Выводы и рекомендации
Отключение XML-RPC — это важный шаг для повышения безопасности WordPress-сайта, особенно если вы не используете мобильные приложения или внешние сервисы, работающие через этот протокол. Варианты отключения через код и настройки сервера позволяют гибко и быстро решить эту задачу без плагинов.
Обязательно протестируйте работу сайта после внесения изменений, чтобы убедиться, что нужный функционал не пострадал.