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

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

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

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

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

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

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

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

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

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

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

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

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

Удаление XML-RPC

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

или так:

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

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

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

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

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

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

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

  • wp-trackback.php
  • xmlrpc.php

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

tiaurus

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

Комментировать

/* ]]> */