XML-RPC

XML-RPC 

 

XML-RPC

Возможно, вы никогда не слышали об XML-RPC, но наверняка применяли его.

Если вы когда-либо использовали мобильное приложение для WordPress для публикации, проверки комментариев или просмотра статистики, то вы использовали XML-RPC. Если вы применяли Microsoft Word или любое настольное приложение для ведения блогов для написания постов для сайта, то вы использовали XML-RPC. Если вы установили и активировали плагин Jetpack, то использовали XML-RPC. Он везде.

 

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

 

Каждый запрос аутентифицируется на уровне пользователя – то есть вы снова входите на сайт всякий раз, когда отправляете ему запрос. Отслеживание удаленного взаимодействия с сайтом дает пугающую картину.

 

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

 

Это плохо, потому что каждый запрос содержит имя пользователя и пароль открытым текстом.

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

 

Если бы вы просматривали интернет исключительно через HTTPs, это не было бы проблемой. Наверняка вы не хотите устанавливать сертификат SSL и платить за него только ради ведения личного блога, а значит, вы уязвимы к взлому.

 

 

XML-RPC

 

 

Чтобы обеспечить защиту XML-RPC для WordPress, был создан плагин Безопасный XML-RPC. Он основывается на стандартной реализации XML-RPC для WordPress, сохраняет 100% обратную совместимость, но расширяет новый метод для аутентификации без раскрытия вашей конфиденциальной информации всему миру.

 

Как только вы входите в WordPress, у вас в профиле появляется доступ к новому разделу: “Права на удаленную публикацию”. Этот раздел перечисляет все приложения, которым разрешено взаимодействовать с WordPress от вашего имени, вместе с их открытым и закрытым ключами. Оба эти ключа вставляются в клиентское приложение – настольную программу, приложение Android или удаленную веб-страницу.

 

При отправке запроса клиент будет строить документ XML как обычно, оставляя пустыми поля имени пользователя и пароля. Затем он создаст хэш SHA256 от закрытого ключа и документа XML. Потом клиент передаст свой открытый ключ и этот хэш в заголовке Authorization(авторизация) запроса к WordPress.

 

WordPress по открытому ключу клиента найдет пользователя, к которому он относится. Далее WordPress самостоятельно вычислит хэш SHA256 закрытого ключа + документа запроса и сравнивает его с хэшем, переданным по запросу. Если они совпадают, то запрос достоверный, и клиента впускают в админку. Дополнительно о защите сайта смотри защита WordPress.

 

Аутентификация по имени пользователя и паролю и аутентификация, по открытому и закрытому ключам работают по простому принципу – не которая секретная информация, известная и клиенту, и серверу, используется для аутентификации запроса. При аутентификации по паролю в WordPress секретную информацию приходится отправлять серверу на проверку, а значит, она больше не секретна.

 

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

This blog is kept spam free by WP-SpamFree.