Обслуживание WordPress Взломали сайт? Плагин безопасности Цены Блог
Главная / Блог / Безопасность сайта
18 сентября, 2026

Что такое XML-RPC в WordPress, почему его любят боты и когда его можно отключить

Что такое XML-RPC? Старый способ, которым приложения общаются с WordPress через файл xmlrpc.php. Большинству небольших сайтов его можно отключить. Я бы так и сделал, если вы не пользуетесь Jetpack или старым приложением для публикации. Но сначала проверьте, не держится ли на нем что-то нужное.

Что такое XML-RPC в WordPress?

XML-RPC - старый протокол удаленного вызова: приложение отправляет XML в HTTP-запросе POST, а WordPress выполняет действие. В WordPress он доступен по адресу /xmlrpc.php. По умолчанию он включен с WordPress 3.5, который вышел в 2012 году.

Через него приложения и другие сайты могли публиковать записи, править контент и управлять сайтом удаленно. На нем же работают пингбэки и трекбэки. Тогда это было удобно: опубликовать запись из отдельной программы другим способом было сложнее.

Сейчас большую часть этих задач решает REST API - он входит в ядро WordPress с версии 4.7. Официальное мобильное приложение WordPress умеет работать через REST API с паролями приложений. Так что публикация с телефона сама по себе не повод оставлять XML-RPC открытым. Проверьте именно свое приложение.

Есть нюанс. Jetpack до сих пор использует XML-RPC для части соединения с WordPress.com. Он также нужен некоторым старым программам для ведения блога, интеграциям вроде IFTTT/Zapier и прежним приложениям для Android или iOS. Старое - не значит заброшенное.


Почему боты долбятся в xmlrpc.php?

Их привлекает system.multicall. С его помощью можно упаковать сотни попыток подобрать логин и пароль в один HTTP-запрос. Ограничитель, который считает запросы к wp-login.php, может не заметить ни одной попытки. А бот тем временем перебирает пароли через XML-RPC.

Вот чем атака через xmlrpc.php отличается от обычного перебора на странице входа. Цель та же - угадать рабочий логин с паролем. Но путь другой, и попытки собраны иначе. Защищать страницу входа нужно, только XML-RPC это автоматически не прикрывает. В статье про защиту входа в WordPress разбираем парадную дверь. С XML-RPC придется определиться отдельно.

Есть еще pingback.ping. Атакующий может заставить ваш сайт слать запросы чужому серверу в рамках отраженной DDoS-атаки или проверять внутренние адреса. Вряд ли ради этого владелец магазина запускал сайт.

И еще одна деталь: XML-RPC принимает пароли приложений, а многие варианты 2FA не защищают вход через него. Дополнительный шаг на привычной странице входа не доказывает, что этот адрес тоже под защитой.

Как проверить, включен ли XML-RPC

Начните с простого. Откройте в браузере https://yoursite.com/xmlrpc.php, подставив свой домен. Если видите XML-RPC server accepts POST requests only., адрес доступен. Это подсказка, а не доказательство, что работают все методы XML-RPC или вход: браузер отправил GET-запрос, а XML-RPC использует POST.

Если пользуетесь терминалом, попросите сервер показать список методов:

curl -s -d '<?xml version="1.0"?><methodCall><methodName>system.listMethods</methodName></methodCall>' https://yoursite.com/xmlrpc.php

Есть доступ к логам сервера? Поищите повторяющиеся записи POST /xmlrpc.php с разных незнакомых IP. Так обычно шумят боты. Если адрес заблокирован, вместо ответа вы можете получить отказ. Если XML-RPC вам не нужен, это как раз хороший результат.

Стоит ли отключать XML-RPC?

Для большинства небольших сайтов - да, полностью. Если вы редактируете страницы в WordPress, принимаете заказы через магазин и не подключали старую программу для публикации, скорее всего, разницы не заметите. Зачем держать запасной вход открытым только потому, что он достался вместе с движком?

Не спешите блокировать XML-RPC, если используете:

  • Jetpack - ему нужен XML-RPC для части соединения с WordPress.com.
  • Старое приложение на компьютере или телефоне, которое публикует записи на сайте.
  • Старую автоматизацию или другую интеграцию, завязанную на XML-RPC.

Не уверены? Запишите, какие приложения публикуют или синхронизируют контент. Потом отключите адрес, проверьте эти связи и, если что-то сломается, отмените изменение. Если интеграцию настраивал подрядчик, сначала спросите его. Узнать о поломке посреди дня, когда идут заказы, - так себе вариант.


Как отключить XML-RPC в WordPress

Выберите один способ. Собирать все варианты в кучу не нужно. Я предпочитаю блокировку на сервере: запрос даже не доходит до PHP. Но если править конфигурацию сервера не хочется, переключатель в плагине проще.

Заблокировать xmlrpc.php на сервере

На Apache добавьте это в файл .htaccess сайта:

<Files xmlrpc.php>
 Require all denied
</Files>

Для Nginx аналогичная настройка выглядит так:

location = /xmlrpc.php { deny all; }

Не знаете, где лежит конфигурация? Попросите хостинг или специалиста, который обслуживает сайт. Если пользуетесь Jetpack, не перекрывайте XML-RPC целиком, если не готовы потерять соединение. Можно разрешить доступ только IP-адресам Jetpack, но за таким списком придется следить.

Добавить фрагмент кода или mu-plugin

Этот PHP-фильтр отключает методы XML-RPC, для которых нужен вход:

add_filter( 'xmlrpc_enabled', '__return_false' );

Важно: пингбэки он не выключает. Если выбрали этот путь, уберите и их методы:

add_filter( 'xmlrpc_methods', function ( $methods ) {
    unset( $methods['pingback.ping'] );
    unset( $methods['pingback.extensions.getPingbacks'] );
    return $methods;
} );

Добавьте фрагмент через инструмент для сниппетов или mu-plugin, а не туда, где он пропадет после смены темы. И не ждите, что проверка через браузер покажет заблокированный адрес: этот способ меняет возможности XML-RPC, но не останавливает запрос на сервере.

Использовать плагин безопасности или файрвол

Во многих плагинах безопасности есть переключатель для отключения XML-RPC. Если не хотите трогать серверные файлы, начните с него. Включили - проверьте приложения и интеграции. И почитайте описание настройки: иногда она запрещает вход, но оставляет методы пингбэков.


А если XML-RPC нужно оставить?

Оставляйте осознанно. Если без него не работает Jetpack или старое приложение, ограничьте частоту запросов через файрвол, используйте длинные уникальные пароли и убедитесь, что защита распространяется на /xmlrpc.php. Тут пригодится бесплатный файрвол WordPress. Защита входа WordPress тоже полезна, но проверьте настройки: правила для wp-login.php могут не покрывать XML-RPC.

После любого изменения опубликуйте тестовую запись из приложения которым пользуетесь. Если у вас Jetpack - проверьте и его соединение. Пока не проверили то, что могло сломаться, работа не закончена.

Чего отключение XML-RPC не исправит

Оно не заменит слабые пароли и не обновит старый плагин. И не помешает ботам находить логины через REST API - это отдельная история, ее разбираем в статье про перечисление пользователей через REST API. XML-RPC - одна дверь из нескольких. Не нужна - закройте, но про остальной сайт тоже не забывайте.

Проверка на две минуты

Откройте адрес /xmlrpc.php на своем сайте. Видите сообщение про POST? Тогда задайте себе один вопрос: что у меня еще использует XML-RPC? Проверьте Jetpack и приложения для публикации. Если ответ - «ничего», отключите XML-RPC и попробуйте опубликовать запись привычным способом. Две минуты на такую проверку полезнее, чем оставлять ботам дверь, которой вы сами не пользуетесь.