Если сайт регулярно ловит лишние запросы к xmlrpc.php, но полностью отключать XML-RPC нельзя из-за мобильного приложения, внешнего редактора или интеграции, обычно проблема не в самом протоколе, а в pingback'ах. Именно они часто создают шум в логах, участвуют в DDoS-атаках и дают бесполезные уведомления о ссылках.
В этой статье разберём, как отключить только pingback'и, не ломая остальные сценарии, как проверить результат и где чаще всего ошибаются при такой настройке.
Когда это действительно нужно
Отключение pingback'ов имеет смысл, если вы видите хотя бы один из этих симптомов:
- в логах веб-сервера много обращений к
/xmlrpc.php; - в админке появляются странные уведомления о пингах и обратных ссылках;
- на сайт приходят массовые запросы с одинаковыми параметрами, похожие на перебор;
- вы используете WordPress только как CMS, без удалённой публикации через XML-RPC;
- нужно оставить совместимость с частью внешних сервисов, но убрать лишнюю поверхность атаки.
Важно не путать pingback'и с полноценным отключением XML-RPC. Если у вас есть интеграции, которые реально используют этот интерфейс, грубое блокирование xmlrpc.php через сервер или плагин может сломать работу редакторов и приложений.
Диагностика: что именно сейчас использует XML-RPC
Перед изменениями проверьте, есть ли на сайте реальные вызовы XML-RPC. Самый простой способ — посмотреть логи веб-сервера и найти обращения к xmlrpc.php. Если запросы идут пачками и в них нет признаков вашей интеграции, чаще всего это автоматический шум.
Ещё один практический тест — временно открыть /xmlrpc.php в браузере. Если интерфейс отвечает сообщением о том, что XML-RPC сервер принимает только POST-запросы, сам файл доступен. Это не проблема само по себе, но помогает понять, что блокировки на уровне сервера нет.
Если вы не уверены, использует ли сайт внешнюю публикацию, проверьте:
- мобильные приложения WordPress у редакторов;
- старые интеграции с Jetpack или сторонними сервисами;
- автоматизацию публикаций через сторонние клиенты;
- вебхуки и API, которые могли быть настроены давно и забыты.
Как отключить только pingback'и через код
Для точечной настройки лучше использовать фильтры WordPress. Так вы не трогаете весь XML-RPC, а убираете только методы, связанные с pingback.
<?php
add_filter( 'xmlrpc_methods', function( $methods ) {
unset( $methods['pingback.ping'] );
unset( $methods['pingback.extensions.getPingbacks'] );
return $methods;
} );Этот код можно добавить в functions.php дочерней темы, но надёжнее — в небольшой mu-plugin, если настройка должна переживать смену темы.
Пример mu-plugin:
<?php
/**
* Plugin Name: Disable XML-RPC Pingbacks
*/
add_filter( 'xmlrpc_methods', function( $methods ) {
unset( $methods['pingback.ping'] );
unset( $methods['pingback.extensions.getPingbacks'] );
return $methods;
} );Почему это лучше, чем просто закрыть xmlrpc.php
Если вы заблокируете xmlrpc.php на уровне Nginx, Apache или через security-плагин, вы отключите всё сразу. Это грубый, но иногда оправданный вариант. Однако в реальной редакционной работе часто нужен компромисс: оставить полезные сценарии и убрать только лишнее.
Фильтр xmlrpc_methods даёт именно такой компромисс. Он не мешает остальным методам XML-RPC, но убирает pingback'и как отдельный вектор нагрузки.
Альтернативы: плагин, код или серверная блокировка
| Подход | Когда подходит | Минус |
|---|---|---|
Код через xmlrpc_methods | Нужно отключить только pingback'и | Требует доступа к теме или mu-plugin |
| Security-плагин | Нужна настройка без кода | Может отключить больше, чем нужно |
| Блокировка на сервере | XML-RPC не используется вообще | Ломает удалённую публикацию и интеграции |
Если у вас уже стоит плагин безопасности, сначала проверьте, не отключает ли он XML-RPC целиком. Иногда это удобно, но часто приводит к ложным жалобам от редакторов: «Перестало работать приложение», хотя причина в слишком жёсткой политике безопасности.
Проверка результата после внедрения
После добавления кода проверьте три вещи.
- Откройте сайт и убедитесь, что он работает без ошибок PHP.
- Повторно посмотрите логи и проверьте, что запросы с методами pingback больше не проходят.
- Если у вас есть внешняя интеграция, выполните тестовую публикацию или синхронизацию и убедитесь, что она не сломалась.
Для ручной проверки можно отправить тестовый XML-RPC-запрос с методом pingback. Если метод отключён, сервер должен вернуть ошибку о неизвестном методе или отказе в выполнении. Это нормальный результат.
Также полезно проверить, не появились ли побочные эффекты в админке: иногда после жёстких настроек безопасности исчезают уведомления, которые редакторы считали рабочими, хотя на самом деле это были старые pingback'и.
Частые ошибки и как их исправить
Отключили весь XML-RPC вместо pingback'ов
Такое случается, если в security-плагине включили готовую опцию без чтения описания. Исправление простое: уберите глобальную блокировку и верните точечный фильтр через xmlrpc_methods.
Добавили код в активную тему и забыли про обновление
Если настройка лежит в functions.php основной темы, при смене темы она исчезнет. Для технической правки лучше использовать mu-plugin или отдельный мини-плагин.
Проверили только браузером и решили, что всё работает
Открытие xmlrpc.php в браузере не показывает, как ведут себя POST-запросы и конкретные методы. Нужна проверка именно вызова pingback и логов сервера.
Сломали интеграцию и не связали это с XML-RPC
Если после изменения перестали работать старые клиенты публикации, откатите настройку и проверьте, использует ли сервис XML-RPC вообще. Иногда проблема не в WordPress, а в том, что интеграция давно завязана на устаревший протокол.
Практические советы по безопасности и производительности
Если pingback'и вам не нужны, отключение их — не единственная мера. Полезно дополнительно:
- обновить ядро WordPress, темы и плагины;
- ограничить доступ к админке по IP, если это уместно;
- включить двухфакторную аутентификацию для редакторов;
- проверить, не открывает ли сайт лишние REST-эндпоинты для анонимных запросов;
- следить за логами 404 и POST-запросов к служебным файлам.
Если нужен более широкий набор технических чисток, в экосистеме WPShop есть Clearfy Pro — он полезен именно как набор точечных оптимизаций и отключений лишнего, но перед включением любой готовой опции всё равно стоит понимать, что она делает. Ссылку лучше проверять в контексте конкретной задачи: Clearfy Pro.
Главная идея простая: если XML-RPC нужен частично, не рубите его целиком. Отключите только pingback'и, проверьте логи и убедитесь, что рабочие интеграции остались на месте.