Paranoid - курс от Codeby Security School

Представляем вашему вниманию курс от команды codeby - "Комплекс мер по защите персональных данных, анонимности в интернете и не только" Подробнее ...


Вызов удаленной процедуры WordPress с помощью протокола XML-RPC

XML-RPC это протокол вызова удаленных процедур, который использует формат XML для кодирования данных и протокол HTTP для обмена данными по сети между клиентом и сервером.

В нашем примере в качестве клиента будет выступать Windows Forms приложение, а в качестве сервера, сайт под управлением cms WordPress. Данная cms имеет набор удаленных процедур для решения различных задач. Все доступные процедуры, описание, а так же принимаемые параметры и возвращаемые значения можно найти на официальном сайте, либо по запросу XML-RPC WordPress API.

Для примера рассмотрим вызов удаленной процедуры wp.getPost, которая позволяет получить в качестве результата структуру, которая содержит все поля таблицы wp_posts. Получив результат, выведем значение одной из колонок, например post_content, которая содержит текст статьи, в окно элемента управления textBox.

Создание XML файла

Так как передаваемые данные должны быть формата XML, то для начала создадим обычный xml файл, который будет хранить: имя удаленной процедуры и значения параметров.

После строки объявления, следует корневой элемент methodCall, который содержит два элемента:

methodName – обязательный элемент, который хранит имя вызываемой удаленной процедуры.

params — необязательный элемент, который хранит значения передаваемых параметров. Должен быть создан, если процедура имеет параметры.

удаленная процедура

Как видно на картинке, удаленная процедура имеет несколько параметров, из них четыре является обязательными: int blog_id, string username, string password, int post_id, а остальные параметры Optional — необязательные.

Каждый параметр объявляется в xml файле, как элемент param, у которого обязательно нужно указать дочерний элемент value, который хранит значение параметра. Так же можно явно указать тип параметра, например: <int>, <string>,<boolean>, если тег с типом не указан, то по умолчанию значение параметра имеет тип string.

Выполнение XML-RPC запроса

XML файл создан, и теперь можно выполнить XML-RPC запрос, отправив на удаленный компьютер сообщение, которое состоит из двух блоков: header и body.

Header содержит различные http заголовки, среди которых обязательными являются: User-Agent, Host, Content-Length.

Body данные в формате XML.

Для обмена данными по сети используется протокол HTTP и метод передачи данных POST.


Codeby Security School от Сodeby

Мы запустили свою онлайн школу по информационной безопасности. Защита персональных данных, анонимность в сети интернет, настройка виртуальных машин, безопасная передача данных, анти форензика и еще много всего полезного в курсе Paranoid


После отправки сообщения серверная сторона принимает запрос и выполняет указанную процедуру. После этого формируется новое сообщения (ответ), которое так же состоит из двух блоков, но содержит уже другие данные, так например блок body, теперь содержит root элемент methodResponse, который может содержать один из двух элементов: fault или params.

fault — данный элемент содержит сообщение об ошибке и представляет собой структуру, которая состоит из двух элементов: faultCode — код ошибки и faultString — строка описания ошибки.

params если ошибок нет, то в ответ мы получим возвращаемые значения (данные в формате XML), которые будут иметь такой вид:

исходный код программы

Полученный ответ имеет XML формат. Используя метод Load, класса XmlDocument, загружаем XML-документ из указанного потока в память. Затем, чтобы получить текст статьи достаточно указать в качестве индекса число 13.

возвращаемые значения

В адресе запроса, после имени сайта, обязательно указываем страницу xmlrpc.php, которая выступает обработчиком отправленного с клиента запроса.

В более ранних версиях WordPress (младше 3.5) перед отправкой запроса нужно было обязательно проверить включен ли XML-RPC протокол. Для этого нужно было перейти в меню Параметры, выбрать пункт Написание и проверить, чтобы стояла галочка рядом с пунктом «Включить протоколы публикации», как на картинке ниже.

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

Теперь этого делать не нужно, так как данный протокол по умолчанию будет включен сразу же после установки cms, а в админке этого пункта просто не будет.

Видео

И ещё одно видео дополнение, в котором рассмотрено два момента:

1. Возможность установки значений параметров напрямую из приложения. После чего не нужно будет каждый раз вручную изменять значения в самом xml файле.

2. Повышаем безопасность при передаче по сети значений параметров: логин и пароль, применяя кодирование base64. После кодирования эти данные не будут передаваться в открытом виде.

Читайте также:


Безопасная сделка с гарантом Сodeby

Гарант является доверенным посредником между Участниками при проведении сделки.​ Услуга сайта «Проведение сделок через Гаранта» предоставляется всем зарегистрированным пользователям codeby.net Подробнее ...


Похожие темы

Как установить Apache, MariaDB/MySQL и PHP на Cent... Если вас интересует, как установить сервер на Windows, то вам сюда "Установка Apache, PHP, MySQL, phpMyAdmin на Windows". Apache, Mari...
c# Шпаргалка для работы с папками и подпапками... c# Шпаргалка для работы с папками и подпапками Перед началом работы подключите пространство имён System.IO Это можно выполнить как вручную, добави...
Как просто получить данные из DataTable... Как получить данные из DataTable в c# В одной из предыдущих статей был показан пример работы с базой данных Mysql и c#. После этого многие стали обра...
Выгрузка данных из базы данных Mysql в XML на c#... Как выгрузить данные из базы данных Mysql в XML? В этой статье рассмотрим на простом примере, как выполняется выгрузка данных из базы данных Mysql в ...
Работа с элементом управления TreeView в языке c#... c# работа с элементом управления TreeView Для начала создадим Windows Forms приложение. После чего добавим на форму элемент управления TreeView, кото...