XML-RPC — это протокол, встроенный в WordPress для удалённого взаимодействия с сайтом, например, для публикации постов через внешние приложения или мобильные клиенты. Однако из-за своей популярности XML-RPC часто становится целью для атак, таких как перебор паролей (brute force) и DDoS. В этой статье мы подробно рассмотрим, как отключить или удалить XML-RPC, чтобы обезопасить сайт.
Что такое XML-RPC и почему его стоит отключать
XML-RPC — это интерфейс обмена данными между WordPress и внешними приложениями. Он позволяет удалённо управлять сайтом, но при этом открывает дверь для злоумышленников, если не настроен должным образом. Особенно уязвимы сайты с устаревшими плагинами или слабыми паролями.
Основные причины отключения XML-RPC:
- Защита от атак перебора паролей через метод
system.multicall. - Снижение нагрузки на сервер от нежелательных запросов.
- Уменьшение риска эксплуатации известных уязвимостей.
Если вы не используете мобильные приложения WordPress или внешние сервисы, взаимодействующие через XML-RPC, лучше его отключить.
Как проверить, включён ли XML-RPC на вашем сайте
Самый простой способ — перейти по URL: https://ваш-сайт.ru/xmlrpc.php. Если вы видите сообщение «XML-RPC server accepts POST requests only.» — значит XML-RPC активен.
Также можно проверить через инструменты безопасности или плагины, например, Clearfy, которые показывают активные точки входа.
Как отключить XML-RPC в WordPress с помощью плагина
Самый простой способ для большинства пользователей — установить плагин, который выключит XML-RPC без вмешательства в код:
- Disable XML-RPC — минималистичный плагин, который полностью блокирует доступ к
xmlrpc.php. - Clearfy
Преимущество плагинов — удобство и минимальный риск ошибок.
Отключение XML-RPC через functions.php
Если вы предпочитаете отключить XML-RPC вручную, добавьте следующий код в файл functions.php активной темы или в собственный плугин:
function wp1_disable_xmlrpc( $methods ) {
return [];
}
add_filter( 'xmlrpc_enabled', '__return_false' );
add_filter( 'xmlrpc_methods', 'wp1_disable_xmlrpc' );Этот код полностью отключает API XML-RPC, возвращая false при попытках его вызова.
Блокировка доступа к xmlrpc.php через .htaccess или nginx
Для дополнительной защиты можно запретить доступ к xmlrpc.php на уровне сервера.
Apache (.htaccess)
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>Этот код блокирует все запросы к xmlrpc.php.
NGINX
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}После внесения изменений перезапустите сервер.
Как проверить, что XML-RPC отключён правильно
После внесения изменений снова перейдите по адресу https://ваш-сайт.ru/xmlrpc.php. Если вы видите ошибку 403 или сообщение о запрете доступа, значит всё настроено верно.
Также можно использовать онлайн-инструменты для проверки XML-RPC, например, xmlrpc.eritreo.it.
Альтернативы XML-RPC и что использовать вместо него
Если вам нужны удалённые возможности управления сайтом, рассмотрите современные REST API, который встроен в WordPress с версии 4.7. Он более защищён и гибок.
Пример запроса REST API для создания поста с использованием PHP:
$response = wp_remote_post( 'https://ваш-сайт.ru/wp-json/wp/v2/posts', [
'headers' => [
'Authorization' => 'Bearer ваш_токен',
'Content-Type' => 'application/json'
],
'body' => json_encode([
'title' => 'Заголовок поста',
'content' => 'Содержимое поста',
'status' => 'publish'
])
]);
if ( is_wp_error( $response ) ) {
echo 'Ошибка: ' . $response->get_error_message();
} else {
echo 'Пост успешно создан!';
}REST API позволяет интегрироваться с внешними сервисами безопаснее, чем XML-RPC.