Гид по технологиям

Отключение XML-RPC в WordPress: что это, почему и как защитить сайт

• 7 min read • Безопасность • Обновлено 23 Nov 2025
Отключение XML-RPC в WordPress: что, почему и как
Отключение XML-RPC в WordPress: что, почему и как

Главная иллюстрация: логотип WordPress и сетевое подключение

Что такое XML-RPC и зачем он нужен

WordPress создан как веб-приложение: PHP-скрипты рендерят HTML, который браузер получает и отображает. Но иногда нужно управлять сайтом не через браузер — например, мобильное приложение или внешняя панель управления. XML-RPC — это устаревший стандарт API, который оборачивает запросы и ответы в простой XML и позволяет удалённо выполнять типичные действия: создавать посты, редактировать, получать список и т.д.

Схема работы XML-RPC: сервер формирует XML и отправляет приложению

Коротко: XML-RPC экономит трафик и упрощает работу сторонних приложений. Но для аутентификации он традиционно использует передачу имени пользователя и пароля в каждом запросе — это приносит риски.

Определение: XML-RPC — простой протокол удалённого вызова процедур, использующий XML для кодирования сообщений.

Какими угрозами пользуются злоумышленники

XML-RPC увеличивает уязвимость сайта по двум главным направлениям: подбор паролей (brute-force) и перехват/кража учётных данных. Ниже — подробное объяснение и примеры поведения атак.

Подбор паролей (brute force)

Brute force — это метод, при котором автоматизированные боты перебирают комбинации логина и пароля. В отличие от стандартной формы входа, на которой можно задать ограничение попыток (rate limiting), XML-RPC позволяет шифрованным или частично маскированным запросам обходить такие ограничения. Злоумышленник может отправлять тысячи запросов в секунду через xmlrpc.php, подсовывая разные пароли, и сервер может не отсекать эти попытки как «логин с формы», если не настроено дополнительное ограничение.

Риски:

  • Бесконечные попытки подбора без механизма блокировки.
  • Перегрузка сервера за счёт большого количества удалённых запросов (DDoS через pingback).

Иллюстрация brute-force: бот пытает комбинации логин/пароль

Перехват и кража учётных данных

Каждый XML-RPC-запрос часто содержит имя пользователя и пароль. При отсутствии надёжного TLS/HTTPS или при наличии брешей в сетевой инфраструктуре эти пакеты можно перехватить. После захвата валидных учётных данных злоумышленнику не нужно больше подбирать пароли — он получает прямой доступ.

Иллюстрация перехвата логина: трафик перехватывают на сетевом уровне

Важно: если вы используете HTTPS и надёжные пароли, риск перехвата снижается, но не исчезает при наличии уязвимостей на сервере или в сторонних интеграциях.

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

Начиная с WordPress 3.5 код XML-RPC стал более устойчивым, и разработчики включили его по умолчанию. Решение об отключении должно опираться на конкретные сценарии использования:

Когда не стоит отключать XML-RPC:

  • Вы активно пользуетесь мобильными приложениями, которые управляют сайтом.
  • Установлен и используется Jetpack (он опирается на xmlrpc для связи).
  • В вашей инфраструктуре есть внешние CRM/интеграции, использующие xmlrpc.

Когда имеет смысл отключить:

  • Вы не используете мобильные клиенты и не подключали внешние сервисы.
  • Хотите дополнительно ограничить вектор атак на сайт и упростить защиту.

Подготовка перед отключением: мини-методология

  1. Инвентаризация: проверьте плагины и темы на вызовы XML-RPC.
  2. Бэкап: сделайте резервную копию файлов и базы данных.
  3. Тестирование: отключайте в staging/тестовой среде до продакшена.
  4. Мониторинг: включите логирование и оповещения на случай всплеска ошибок.

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

Важно: Jetpack требует XML-RPC. Если вы используете Jetpack, отключать нельзя.

Способ 1 — отключение через functions.php

  1. Откройте папку темы (обычно wp-content/themes/) и файл functions.php.
  2. Добавьте в конец файла следующий код и сохраните:
// Disable use XML-RPC
add_filter('xmlrpc_enabled','__return_false');

Этот метод отключает функциональность на уровне ядра WordPress, но файл xmlrpc.php при этом остаётся доступен и может продолжать принимать запросы — поэтому лучше дополнительно блокировать сам файл на уровне сервера.

Способ 2 — блокировка доступа к xmlrpc.php на уровне сервера

Блокировка на уровне веб-сервера — более надёжный способ, так как запросы не доходят до PHP и не потребляют ресурсы приложения.

Apache (в .htaccess или конфигурации виртуального хоста):

# Запретить все запросы к xmlrpc.php для этого домена

  Order Deny,Allow
  Deny from all

Nginx (в конфигурации сервера или location):

# Блокировка запросов к xmlrpc.php
location = /xmlrpc.php {
  deny all;
  return 444;
}

Примечание: директива return 444 в Nginx быстро закрывает соединение; при необходимости можно возвращать 403.

Проверка после отключения

  • Откройте https://your-site.com/xmlrpc.php — корректный ответ после блокировки обычно будет 403/444 или отсутствовать соединение.
  • Проверьте логи сервера на попытки доступа к xmlrpc.php.
  • Убедитесь, что мобильные клиенты и интеграции продолжают работать (если они были нужны — протестируйте).

Контрпримеры и случаи, когда отключение не решит проблему

  • Если уязвимость в плагине или теме позволяет выполнение кода, отключение XML-RPC только частично снижает риск.
  • Если злоумышленник уже получил доступ к админ-учётной записи (крадут cookie, токены, SSH ключи), блокировка XML-RPC не помешает дальнейшей атаке.
  • Если ваши интеграции используют REST API или OAuth, отключение XML-RPC не закрывает эти каналы.

Альтернативные подходы к защите (вместо полного отключения)

  1. Ограничить доступ к xmlrpc.php по IP (только доверенные IP).
  2. Использовать двухфакторную аутентификацию (2FA) для всех админов.
  3. Включить Web Application Firewall (WAF) — блокирует известные вредоносные паттерны.
  4. Настроить rate limiting (лимиты запросов) на уровне Nginx/Cloudflare.
  5. Перейти на REST API с авторизацией через OAuth, если нужны внешние интеграции.

Чек-лист по ролям

Для администратора сайта:

  • Сделать бэкап перед изменениями.
  • Проверить, не зависит ли от XML-RPC ни один плагин.
  • Установить 2FA и сильные пароли.

Для разработчика:

  • Тестировать изменения в staging.
  • Проверить и при необходимости исправить обращение к XML-RPC в коде.
  • Реализовать логирование и оповещения об ошибках.

Для хостинг-провайдера или инженера инфраструктуры:

  • Настроить блокировку на уровне веб-сервера.
  • Включить rate limiting и WAF.
  • Добавить мониторинг доступности и предупреждения о повышенной нагрузке.

Таблица сравнения: Apache vs Nginx блокировка

  • Apache: блокирует на уровне .htaccess или виртуального хоста, легко задать через .
  • Nginx: блокировка на уровне location быстрее — запрос не запускает PHP.

Практическая рекомендация: если есть доступ к конфигурации сервера, блокируйте на уровне веб-сервера (Nginx/Apache), а не только в functions.php.

Критерии приёмки

  1. При обращении к /xmlrpc.php возвращается 403/444 или соединение закрывается.
  2. Логи не показывают успешных авторизаций через xmlrpc.php.
  3. Все бизнес-критичные интеграции работают (если они требуются).
  4. Наблюдается снижение количества подозрительных попыток входа (если были такие до изменений).

План отката (rollback)

  1. Восстановить резервную копию functions.php или удалить добавленный код.
  2. Удалить правила блокировки из конфигурации сервера и перезагрузить его.
  3. Проверить доступ интеграций и сообщить командам, зависящим от API.

Тесты и приёмочные сценарии

Тест 1 — Проверка блокировки:

  • Шаги: выполнить GET https://your-site.com/xmlrpc.php.
  • Ожидаемый результат: 403/444 или другая индикативная ошибка, не 200.

Тест 2 — Проверка работы админки:

  • Шаги: выполнить вход в панель администратора.
  • Ожидаемый результат: вход работает без сбоев.

Тест 3 — Проверка интеграций:

  • Шаги: инициировать операцию из мобильного приложения или внешней панели, если применимо.
  • Ожидаемый результат: операция либо выполняется (если интеграция не зависит от XML-RPC), либо корректно падает с понятной ошибкой для владельцев интеграции.

Матрица рисков и меры смягчения

  • Риск: подбор паролей через xmlrpc.php. Меры: блокировка на уровне сервера, rate limiting, 2FA.
  • Риск: перехват учётных данных. Меры: обязательный HTTPS, проверка цепочки сертификатов, удаление устаревших протоколов (TLS 1.0/1.1).
  • Риск: потеря функциональности интеграций. Меры: инвентаризация, уведомление заинтересованных команд, тестирование перед выкатом.

Snippets / Шпаргалка администратору

Отключить через functions.php:

// Disable use XML-RPC
add_filter('xmlrpc_enabled','__return_false');

Apache (.htaccess):


  Order Deny,Allow
  Deny from all

Nginx:

location = /xmlrpc.php {
  deny all;
  return 444;
}

Быстрый обзор: когда отключать, а когда — нет

  • Отключайте, если не используете мобильные клиенты, Jetpack и интеграции.
  • Не отключайте, если доверенные внешние сервисы требуют xmlrpc.
  • Рассмотрите альтернативы: ограничение по IP, WAF, 2FA.

Примерный план действий (SOP)

  1. Инвентаризация зависимостей.
  2. Бэкап.
  3. Отключение в тестовой среде (functions.php + блокировка сервера).
  4. Тестирование интеграций.
  5. Выкат на продакшен в окно технического обслуживания.
  6. Мониторинг и логирование.

Решающее правило (эмпирический хинт)

Если вы не уверены, что xmlrpc необходим — лучше временно отключить и наблюдать за влиянием в течение 48–72 часов. Если ничего критичного не сломается, оставьте блокировку.

Визуальная подсказка: простое дерево принятия решения

flowchart TD
  A[Нужен удалённый доступ к сайту?] -->|Да| B[Используется Jetpack или мобильные клиенты?]
  A -->|Нет| C[Отключить XML-RPC]
  B -->|Да| D[Не отключать, настроить 2FA и WAF]
  B -->|Нет| C

Краткое резюме

  • XML-RPC даёт удобную возможность удалённого управления сайтом, но увеличивает поверхность атаки.
  • Если вы не используете зависимости от XML-RPC, блокировка файла xmlrpc.php на уровне сервера — простая и эффективная мера безопасности.
  • Всегда тестируйте изменения в staging, делайте бэкапы и применяйте дополнительные меры: HTTPS, 2FA и WAF.

Панель управления: пример CPanel и файл .htaccess

Редактирование .htaccess в файловом менеджере

Редактирование файла .htaccess — этап сохранения

Сохранение изменений в .htaccess

Внедрив блокировку или отключение XML-RPC, вы закроете один из распространённых векторов атак и уменьшите нагрузку на сервер. Следуйте чек-листу, тестируйте изменения и держите команду в курсе.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро