Запрет использования интерфейса XML-RPC

Запрет использования интерфейса XML-RPC | n-wp.ru

Одним из слабых мест в WordРress является интерфейс XML-RPC. С его помощью можно публиковать записи, используя офлайновые редакторы. Так же он работает при пингации. Понятно, что постоянно открытый для внешних запросов механизм публикации – потенциально опасное место, и его нужно как-то защитить. Лично я предпочитаю избавляться даже от теоретической возможности проникнуть в блог, поэтому в некоторых блогах запретил пингацию и возможность удаленной публикации записей.

Отключение удаленной публикации

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

Запрет использования интерфейса XML-RPC (2)

Запрет пингации

Если кто-то в интернете публикует ссылку, ведущую на ваш сайт, то в блог посылается специальное уведомление об этом. В зависимости от настроек WordPress это уведомление может с помощью XML-RPC быть опубликовано в блоге в комментариях. очень часто этой возможностью пользуются спаммеры, оставляя в блоге ссылки на свои сайты. Лично я вообще отказался от всякого рода уведомлений, как в сторону блога (трекбэки), так и в обратную сторону (пинги): Обратные ссылки и уведомления – прощайте!.

Для запрета уведомлений (пинги и трекбэки) нужно зайти в раздел Параметры – Обсуждение, и отключить пункты Пытаться оповестить блоги, упоминаемые в статье и Разрешить оповещения с других блогов (уведомления и обратные ссылки). После этого ваш блог перестанет быть источником спама, и перестанет принимать спам с других блогов под видом уведомлений.

Запрет использования интерфейса XML-RPC (1)

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

UPDATE wp_posts SET ping_status="closed";

Вот теперь все – уведомления отключены полностью. Обратите внимание, что wp_posts – это таблица в базе данных, в которой хранятся настройки для каждого поста. Если вы при создании базы данных использовали стандартный префикс wp_, то ничего менять в коде не нужно – он написан с учетом стандартного префикса. Если же вы использовали не стандартный префикс, например, wpxxx_, то и команда будет выглядеть по-другому:

UPDATE wpxxx_posts SET ping_status="closed";

Удаление XML-RPC

После того, как вы отключили уведомления, и запретили использовать механизм удаленной публикации, удалите XML-RPC из файла header.php. Код, задействующий этот интерфейс выглядит примерно так:


или так:

<link rel="pingback" href="" />

Вы можете удалить эти строчки. Я раньше думал, что удаление этих ссылок запрещает пингацию и публикацию со стороны. Однако, заглянув в исходный код страницы блога, обнаружил, что он на месте. Оказывается, WordPress автоматически вставляет в исходный код страниц


Эта ссылка добавляется фильтром из файла wp-includes/default-filters.php. Чтобы ее удалить, нужно или открыть этот файл и закомментировать этот фильтр

//add_action('wp_head', 'rsd_link');

либо добавить в файл functions.php

remove_action('wp_head', 'rsd_link');

Так же следом в файл functions.php можно добавить

remove_action('wp_head', 'wlwmanifest_link');

Этот код запретить работу с блогом редактору Windows Live Writer.

Удаление файлов

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

  • wp-trackback.php
  • xmlrpc.php

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

Автор tiaurus 2182 Articles
Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

Оставьте первый комментарий

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*