Как отключить XML-RPC в WordPress без потери функциональности

Зачем отключать XML-RPC в WordPress и какие бывают риски

XML-RPC — протокол удалённого доступа к сайту WordPress. Он позволяет приложениям и сервисам взаимодействовать с сайтом: например, публикация записей со смартфона, подключение внешних сервисов и плагинов. Однако XML-RPC часто становится целью для атак типа DDoS, перебора паролей и других уязвимостей.

Полное отключение XML-RPC повышает безопасность, но может повлечь потерю важных функций. Часто пользователи сталкиваются с задачей — отключить уязвимые методы, сохранив работоспособность нужных функций.

Диагностика: как проверить, активен ли XML-RPC и какие методы вызываются

Для проверки доступности XML-RPC откройте в браузере URL https://ваш-сайт.com/xmlrpc.php. Если видите сообщение «XML-RPC server accepts POST requests only.», значит протокол активен.

Проверить какие методы вызываются можно с помощью плагинов для логирования или анализа запросов, например, Query Monitor с включением мониторинга HTTP-запросов, либо через серверные логи.

Пошаговое отключение уязвимых методов XML-RPC

1. Отключение всех методов, кроме необходимых

Используем фильтр xmlrpc_methods, чтобы убрать уязвимые методы, например pingback.ping, который часто используется для DDoS-атак.

add_filter('xmlrpc_methods', function($methods) {
    unset($methods['pingback.ping']);
    unset($methods['pingback.extensions.getPingbacks']);
    // Оставляем другие методы для работы мобильных приложений и плагинов
    return $methods;
});

2. Полное отключение XML-RPC с сохранением REST API

Если XML-RPC не используется, можно полностью заблокировать доступ к xmlrpc.php через functions.php или плагин-сниппет:

add_filter('xmlrpc_enabled', '__return_false');

Этот способ отключает протокол, но не влияет на REST API, что важно для большинства современных интеграций.

3. Блокировка доступа к xmlrpc.php на уровне сервера

Дополнительно можно закрыть доступ через .htaccess (для Apache):

<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 отключён или ограничен

  • Попробуйте открыть https://ваш-сайт.com/xmlrpc.php — если видите ошибку 403 или пустой ответ, значит доступ заблокирован.
  • Используйте утилиту curl для отправки запроса:
curl -d '' https://ваш-сайт.com/xmlrpc.php
  • Если в ответе ошибка или пусто, значит протокол недоступен.
  • Для проверки удалённых публикаций можно использовать мобильное приложение WordPress или плагин, чтобы убедиться, что нужные методы работают.

Частые ошибки при отключении XML-RPC и как их исправить

  • Ошибка: Полное отключение через .htaccess блокирует REST API — решение: используйте фильтр xmlrpc_enabled вместо блокировки на уровне сервера.
  • Ошибка: Отключение pingback.ping ломает некоторые SEO-плагины — решение: проверьте совместимость плагинов с отключением XML-RPC, обновите их или замените.
  • Ошибка: Попытка отключить XML-RPC через плагины приводит к конфликтам — решение: реализуйте отключение через код, избегая избыточных плагинов.

Практические советы по безопасности и производительности

  • Отключайте XML-RPC, если не используете мобильные приложения или внешние сервисы, чтобы уменьшить поверхность атаки.
  • Используйте фильтр xmlrpc_methods для точечного контроля, а не блокируйте полностью, если нужны интеграции.
  • Включите двухфакторную аутентификацию для пользователей с правами публикации, чтобы предотвратить подбор паролей через XML-RPC.
  • Мониторьте логи сервера на предмет подозрительной активности, связанной с xmlrpc.php.

Сравнение способов отключения XML-RPC

СпособПлюсыМинусыРекомендуется для
Фильтр xmlrpc_methodsТочный контроль, сохраняет нужные методыТребует понимания, какие методы нужныСайты с частичным использованием XML-RPC
Фильтр xmlrpc_enabledПростое отключение, сохраняет REST APIПолностью блокирует XML-RPC, возможна потеря функционалаСайты без мобильных приложений и внешних сервисов
Блокировка через .htaccess/nginxПолная блокировка на уровне сервераМожет сломать REST API и интеграцииМаксимальная безопасность, если не нужны XML-RPC и REST API
Как разрешить доступ к административной панели WordPress по IP адресу
21.02.2026
Как настроить очистку кеша в WordPress: практическое руководство
03.12.2025
Как автоматизировать удаление старого контента в WordPress: практические советы и примеры кода
18.02.2026
Как избежать проблем с перенаправлениями в WordPress: практические решения и примеры кода
10.12.2025
Как настроить отладку и логирование в wp-config.php для WordPress
27.03.2026
×
ABC
Pagination
Улучшай навигацию на сайте за секунды!
-15%

на ABC Pagination плагин WordPress

Сделать красиво ⋙