Что такое код xmlrpc_server_create

Содержание

Что такое код xmlrpc_server_create

xmlrpc_server_create — создаёт xmlrpc-сервер.

Описание

resource xmlrpc_server_create (void)

Эта функция — ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск. >

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

xmlrpc_server_create

(PHP 4 >= 4.1.0, PHP 5)

xmlrpc_server_create — Creates an xmlrpc server

Описание

Эта функция является ЭКСПЕРИМЕНТАЛЬНОЙ. Поведение этой функции, ее имя и относящаяся к ней документация могут измениться в последующих версиях PHP без уведомления. Используйте эту функцию на свой страх и риск.

К настоящему времени эта функция еще не была документирована; для ознакомления доступен только список аргументов.

Предупреждение!
НОВОСТИ ФОРУМА
Рыцари теории эфира
01.10.2020 — 05:20: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
[center][Youtube]69vJGqDENq4[/Youtube][/center]
[center]14:36[/center]
Osievskii Global News
29 сент. Отправлено 05:20, 01.10.2020 г.’ target=_top>Просвещение от Вячеслава Осиевского — Карим_Хайдаров.
30.09.2020 — 12:51: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
[center][Ok]376309070[/Ok][/center]
[center]11:03[/center] Отправлено 12:51, 30.09.2020 г.’ target=_top>Просвещение от Дэйвида Дюка — Карим_Хайдаров.
30.09.2020 — 11:53: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
[center][Youtube]VVQv1EzDTtY[/Youtube][/center]
[center]10:43[/center]

интервью Раввина Борода https://cursorinfo.co.il/all-news/rav.
мой телеграмм https://t.me/peshekhonovandrei
мой твиттер https://twitter.com/Andrey54708595
мой инстаграм https://www.instagram.com/andreipeshekhonow/

[b]Мой комментарий:
Андрей спрашивает: Краснодарская синагога — это что, военный объект?
— Да, военный, потому что имеет разрешение от Росатома на манипуляции с радиоактивными веществами, а также иными веществами, опасными в отношении массового поражения. Именно это было выявлено группой краснодарцев во главе с Мариной Мелиховой.

[center][Youtube]CLegyQkMkyw[/Youtube][/center]
[center]10:22 [/center]

Доминико Риккарди: Россию ждёт страшное будущее (хотелки ЦРУ):
https://tainy.net/22686-predskazaniya-dominika-rikardi-o-budushhem-rossii-sdelannye-v-2000-godu.html

Завещание Алена Даллеса / Разработка ЦРУ (запрещено к ознакомлению Роскомнадзором = Жид-над-рус-надзором)
http://av-inf.blogspot.com/2013/12/dalles.html

[center][b]Сон разума народа России [/center]

[center][Youtube]CLegyQkMkyw[/Youtube][/center]
[center]10:22 [/center]

Доминико Риккарди: Россию ждёт страшное будущее (хотелки ЦРУ):
https://tainy.net/22686-predskazaniya-dominika-rikardi-o-budushhem-rossii-sdelannye-v-2000-godu.html

Завещание Алена Даллеса / Разработка ЦРУ (запрещено к ознакомлению Роскомнадзором = Жид-над-рус-надзором)
http://av-inf.blogspot.com/2013/12/dalles.html

[center][b]Сон разума народа России [/center]

Что такое xmlrpc.php в WordPress и зачем его отключать

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

Ниже мы подробнее разберём xmlrpc.php и почему он был создан. Мы также рассмотрим общие проблемы безопасности, которые он может вызвать и как их исправить для вашего сайта на WordPress.

Что такое Xmlrpc.php?

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

Например, скажем вы хотите сделать публикацию на своём сайте с вашего мобильного телефона. Вам нужно использовать удалённый доступ предоставляемый xmlrpc.php.

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

Зачем был создан Xmlrpc.php и как он использовался?

Реализация XML-RPC уходит далеко в ранние дни WordPress и даже до того, как WordPress стал WordPress-ом.

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

Решением (на тот момент) было создание клиента для офлайн блоггинга, где вы могли составлять свой контент, затем подключаться к своему блогу и публиковать его. Это подключение осуществлялось через XML-RPC. С основным функционалом XML-RPC ранние приложения используя подобные подключения предоставляли людям возможность заходить на их сайты WordPress с других устройств.

XML-RPC сегодня

В 2008 году с версией 2.6 WordPress, появилась опция включения и выключения XML-RPC. Однако с релизом WordPress приложения для iPhone, поддержка XML-RPC была включена по умолчанию и не было возможности для отключения. Так осталось и поныне.

Конечно функциональность, предоставляемая этим файлом значительно уменьшилась со временем, и размер файла уменьшился с 83kb до 3kb, он уже не играет такой роли, как прежде.

Свойства XML-RPC

С новым интерфейсом программирования приложений (API) WordPress мы можем ожидать, что XML-RPC будет уже отключён полностью. Сегодня этот новый API всё ещё на этапе испытаний и может быть включён только через специальный плагин.

Хотя вы можете ожидать, что API будет включён непосредственно в ядро WordPress в будущем, что полностью исключит необходимость использования xmlrpc.php.

Новый API не идеален, но он обеспечивает хорошую надёжную защиту, в отличие от xmlrpc.php.

Зачем отключать Xmlrpc.php

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

Конечно вы можете защититься очень надёжный паролем и плагинами WordPress, обеспечивающими безопасность. Но лучшим режимом защиты будет просто его отключить.

Есть два основных слабых места XML-RPC, которые использовали в прошлом.

Первое – использует атаку путём прямого подбора пароля (brute force attacks) для получения доступа к вашему сайту. Атакующий попытается получить доступ к вашему сайту, используя xmlrpc.php подбирая различные комбинации имён пользователей и паролей. Они могут эффективно использовать одну команду для тестирования сотен различных паролей. Это позволяет им обходить инструменты безопасности, которые обычно обнаруживают и блокируют атаки прямого подбора.

Второе – перевод сайта в офлайн путём DDoS атаки. Хакеры будут использовать обратное уведомление в WordPress для отправки его тысячам сайтов одновременно. Этот функционал xmlrpc.php даёт хакерам почти бесконечное количество IP-адресов для распространения атаки DDoS.

Чтобы проверить, работает ли XML-RPC на вашем сайте, вы можете запустить его с помощью инструмента под названием XML-RPC Validator. Запустите свой сайт с помощью инструмента, и если вы получите сообщение об ошибке, значит, у вас нет поддержки XML-RPC.

Если вы получите сообщение об успешном завершении, вы можете остановить xmlrpc.php одним из двух подходов ниже.

Метод 1: отключение Xmlrpc.php при помощи плагина

Отключить XML-RPC на вашем сайте WordPress невероятно просто.

Перейдите в раздел Плагины › Добавить новый в вашей админ консоли WordPress. Найдите плагин Disable XML-RPC и установите его, он выглядит как на картинке ниже:

Активируйте плагин и всё готово. Этот плагин автоматически вставит необходимый код для отключения XML-RPC.

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

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

  • Stop XML-RPC Attack. Этот плагин остановить все XML-RPC атаки, но он позволить продолжить работу таких плагинов как Jetpack и другие автоматические инструменты и плагины, предоставляя им доступ к файлам xmlrpc.php.
  • Control XML-RPC Publishing. Это позволяет вам сохранить контроль и использовать удалённо публикации.

Метод 2: отключение Xmlrpc.php вручную

Если вы не хотите использовать плагин и предпочитаете делать это вручную, следуйте этому подходу. Он остановит все входящие запросы xmlrpc.php до того, как он будет передан в WordPress.

Откройте файл .htaccess. Возможно, вам придется включить ‘показать скрытые файлы’ в файловом менеджере или FTP-клиенте, чтобы найти этот файл.

Вставьте этот код в файл .htaccess:

Заключительные мысли

В целом, XML-RPC был добротным решением некоторых проблем, которые возникали из-за удаленной публикации на вашем сайте WordPress. Однако вместе с тем появились некоторые дыры в безопасности, которые оказались довольно опасными для некоторых владельцев сайтов на WordPress.

Чтобы ваш сайт оставался в безопасности, рекомендуется полностью отключить xmlrpc.php, если вам не нужны некоторые функции, необходимые для удаленной публикации и плагина Jetpack. Затем вы можете использовать обходные плагины, которые позволяют использовать эти функции, при этом исправляя дыры в безопасности.

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

Вы заблокировали доступ к XML-RPC через плагин или вручную? Или возникли какие-либо проблемы с безопасностью из-за того, что он был прежде активным? Поделитесь своим опытом в комментариях ниже.

xmlrpc_server_create

xmlrpc_server_create — создаёт xmlrpc-сервер.

Описание

resource xmlrpc_server_create (void)

Эта функция — ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск. >

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Что такое код xmlrpc_server_create

RPC расшифровывается как Remote Procedure Call — удаленный вызов процедур с помощью XML. Как же работает XML-RPC и каковы его отличия от стандарта SOAP?

На сцене — XML-RPC

RPC — удаленный вызов процедур с помощью XML. Сама методика удаленного вызова процедуры известна давно и используется в таких технологиях, как DCOM, SOAP, CORBA. RPC предназначен для построения распределенных клиент-серверных приложений. Это дает возможность строить приложения, которые работают в гетерогенных сетях, например на компьютерах различных систем, производить удаленную обработку данных и управление удаленными приложениями.

Приведем сильно упрощенный пример. Приложение, выполняя обработку некоторых данных на локальной машине, обращается к некоторой процедуре. Если ее реализация присутствует в программе, то процедура (функция) принимает параметры, выполняет действие и возвращает некоторые данные. Если это удаленный вызов, мы должны знать, где будет исполняться наша процедура. Запрос на выполнение процедуры вместе с параметрами записывается в виде XML-документа и посредством HTTP передается по сети на другой компьютер, где из XML-документа извлекается имя процедуры, параметры и прочая нужная информация. После завершения работы процедуры формируется ответ (например, возвращаемые данные) — и он передается компьютеру, пославшему запрос. Заметим, что для прикладной программы все действия совершенно прозрачны.

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

Хорошо, предположим, у нас есть возможность удаленно вызывать процедуры и функции — чего же нам еще? А вот чего. Формат обмена данными при классической модели RPC (DCOM, CORBA) остается бинарным — а значит, работать с ним сложнее, он не слишком подходит, если надо организовать работу распределенной системы, где между отдельными участками сети стоят firewall/прокси-серверы. Технология DCOM, например, реализована для Windows-систем, CORBA функционирует на разных платформах, но наиболее полноценна ее реализация на J2EE. Значит, всегда найдется (и действительно находится) такая конфигурация сети/платформ, чтобы для реализации распределенной системы в ней ни одна технология не подходила. Так что же делать?

Задавшись этим вопросом, компания UserLand Software Inc. создала технологию XML-RPC. Основным транспортом в ней является протокол HTTP; формат данных — XML. Это снимает ограничения, налагаемые как на конфигурацию сети, так и на маршрут следования пакетов,- вызовы XML-RPC представляют собой простой тип данных text/xml и свободно проходят сквозь шлюзы везде, где допускается ретрансляция http-трафика.

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

Что же это такое?

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

Сообщение XML-RPC передается методом POST-протокола HTTP. Сообщения бывают трех типов: запрос, ответ и сообщение об ошибке.

Предупреждение!
Запрос
XML-RPC запрос Описание
POST /RPC2 HTTP/1.0
User-Agent: MyAPP-Word/5.1.2 (WinNT)
Host: server.localnet.com
Content-Type: text/xml
Content-length: 172

CheckWord

Сначала идет стандартный заголовок http-запроса. MIME-тип данных должен быть text/xml, длина также обязательно должна присутствовать и иметь корректное значение, равное длине передаваемого сообщения.
Стандартный заголовок любого корректного XML-документа.
Корневой узел. Не допускается вложенности тегов — значит, одним запросом мы можем вызвать только один метод.
Тег указывает на объект и название метода, который вызывается. Можно указывать так, как принято в языках программирования вызывать свойства класса: имя метода — через точку после имени класса. Можно также передавать пути и имя программы. Мы вызываем метод CheckWord объекта OrfoCheck.
В секции

задаются параметры, которые передаются в метод. Секция может содержать произвольное число подэлементов

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

Типы данных

В протоколе XML-RPC предусмотрено семь простых типов данных и два сложных, для передачи параметров методу и возвращаемых значений. Эти типы отображают основные типы данных реальных языков программирования. Более сложные типы, такие, например, как объекты, нужно передавать в двоичном виде или заменять структурами.

Целые числа — задаются тегом или и представляются 4-байтовыми целыми числами со знаком. Для задания отрицательных чисел ставится знак «-«, например 34, 344, -15.

Логический тип данных представляется тегом и может иметь значения 0 (false) или 1 (true). Можно использовать как 1/0, так и символьные константы true/false.

ASCII-строка — тип данных, принимаемый по умолчанию. Представляет собой просто строку символов, заключенную в теги . В качестве символов нельзя использовать служебные знаки » и представляют собой числа с плавающей точкой двойной точности. Как разделитель целой и дробной части используется знак «,». Пробелы недопустимы. Отрицательные числа задаются знаком «-» перед числом.

Дата/время. Для передачи времени/даты служит тег . Пример времени — 19980717T14:08:55 (в спецификации написано, что сервер сам должен определять, как посылать время/дату. Использовать этот тип данных, пользоваться структурой или же просто передавать дату как строку не рекомендуется).

Двоичные данные передаются в закодированном (base64) виде и описываются тегом .

Структуры. Для передачи структурированных данных можно конструировать свои структуры. Структура определяется корневым элементом , который может содержать произвольное количество элементов , определяющих каждый член структуры. Член структуры описывается двумя тегами: первый, , описывает имя члена, второй, содержит значение члена (вместе с тегом, описывающим тип данных). Например, так описывается структура с двух строковых элементов:

Ответ сервера
XML-RPC ответ Описание
HTTP/1.1 200 OK
Connection: close
Content-Length: 166
Content-Type: text/xml
Date: Fri, 17 Jul 1998 19:55:08 GMT
Server: MyWordCheckSerwer/5.1.2-WinNT

Тело ответа при ошибке приложения

faultCode
4

faultString

Too many рarameters.

Сначала идет стандартный заголовок http-ответа сервера. MIME-тип данных должен быть text/xml, длина также должна обязательно присутствовать и иметь корректное значение, равное длине передаваемого сообщения.
Стандартный заголовок любого корректного XML-документа.
Корневой узел. Не допускается вложенности тегов .
Теги

аналогичны запросу и включают один или более элементов , которые содержат значение, возвращенное методом.
Если сервер отвечает HTTP-кодом 200 ОК — это значит, что запрос успешно обработан. Он уведомляет лишь о том, что данные по сети переданы правильно и сервер сумел их корректно обработать. Но метод также может вернуть ошибку — и это уже будет ошибка не протокола, а логики приложения.
В таком случае передается сообщение и структура, которая описывает код ошибки и текстовое объяснение.
В нашем примере передается структура из двух элементов: первый элемент содержит целочисленный код ошибки (4), второй элемент — текстовая строка, описывающая ошибку (Too many рarameters — неправильное число параметров).

Окончательный вариант

Теперь можно окончательно описать работу нашего тестового примера. Итак, приложение MyAppWord (текстовый редактор) хочет перевести на английский, например, слово «world». Программа формирует запрос к серверу, вызывая процедуру перевода TranslateWord. Процедуре передается структура, содержащая слово, которое следует перевести, и направление перевода, которое задается символьной строкой — «en-ru».

POST /RPC2 HTTP/1.0
User-Agent: MyAppWord/5.1.2 (WinNT)
Host: server.localnet.com
Content-Type: text/xml
Content-length: 172

TranslateWord

Сервер, приняв наш запрос, передает его программе-демону, которая производит парсинг запроса, выделяет из него нужные данные и, найдя (например, по таблице) ссылку на нужный метод, вызывает его с переданными параметрами. Если тип и количество параметров правильные, то по окончании работы метода программа-демон принимает возвращенное значение, преобразует его в XML-описание и формирует ответ.

HTTP/1.1 200 OK
Connection: close
Content-Length: 166
Content-Type: text/xml
Date: Fri, 17 Jul 1998 19:55:08 GMT
Server: MyWordCheckSerwer/5.1.2-WinNT

MyAppWord
Сообщение об ошибке:

HTTP/1.1 200 OK
Connection: close
Content-Length: 166
Content-Type: text/xml
Date: Fri, 17 Jul 1998 19:55:08 GMT
Server: MyWordCheckSerwer/5.1.2-WinNT

faultCode
10

faultString

Перевод невозможен. Слово отсутствует в словаре.

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

Хотя наш пример, на первый взгляд, кажется надуманным и простым, тем не менее, на нем показано, как можно уже сегодня использовать XML-RPC для решения конкретных задач. Конечно, его возможности намного шире, и можно, например, представить себе распределенную ОС, построенную на XML-RPC, или системы визуализации данных, построенные по архитектуре X Window, но с применением все того же XML-RPC.

XML-RPC vs SOAP

Если для реализации удаленного вызова вы используете XML, то у вас есть выбор: использовать XML-RPC или же SOAP (Simple Object Access Protocol). О последней уже написано множество статей, поэтому предлагаем только сравнить обе технологии.

Вот некоторые характеристики, которые определяют различия XML-RPC или же SOAP:

Характеристика XML-RPC SOAP
Скалярные типы данных + +
Структуры + +
Массивы + +
Именованные массивы и структуры +
Определяемые разработчиком кодировки +
Определяемые разработчиком типы данных +
Детализация ошибок + +
Легкость освоения и практического применения +

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

С «определяемыми разработчиком кодировками» ситуация уже серьезнее. Сам механизм подобного ограничения не совсем ясен — ни стандарт XML, ни, тем более, транспортный уровень (протокол HTTP) таких ограничений не имеют. Да и стремление сделать клиент/сервер XML-RPC как можно более простым тоже не привело бы к возникновению подобного ограничения. Хотя, с другой стороны, SOAP тоже не блещет поддержкой кодировок (US-ASCII, UTF-8, UTF-16). Правда, в обеих технологиях есть возможность обойти все эти недостатки сразу — тип данных base64. Но выход ли это?

Посмотрим теперь на пункт «легкость в освоении и применении». В свете сегодняшних темпов развития технологий и стандартов, особенно Web, этот пункт приобретает большую важность. Реальна ситуация, когда крупный проект начинает разрабатываться на самой передовой основе — а в конце работы новый стандарт не только «уже не новый», но и «уже не стандарт вообще». Недавно W3C опубликовала черновой вариант SOAP Version 1.2 — поверьте, и объем, и сложность документации впечатляют. Трудности возникают даже на этапе ознакомительного чтения, не говоря уже о разработке. А вот спецификация XML-RPC занимает около трех страниц А4 и предельно проста.

Да, ни одна из этих технологий не является панацеей от всех бед и не претендует на полноту. Большинство программистов и разработчиков спецификаций сходятся на том, что:

  • если вам нужна система для работы со сложной логикой, если вы передаете большие комплексные структуры данных, если вам нужна полная информация о клиенте, если вы хотите, чтобы запрос содержал в себе инструкции по его обработке, и, наконец, если для вас важно, чтобы за стандартом стояли гранды индустрии (Microsoft, IBM, Sun) — вам следует остановить свой выбор на SOAP;
  • если же данные являются относительно простыми, а приложения должны работать на множестве платформ и на разных языках, если важна скорость работы и логика системы не нуждается в сложных командах — используйте XML-RPC.

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

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

Не трудно увидеть, что стандарт XML-RPС очень прост — и в то же время применение XML как основного инструмента для описания данных позволяет сделать его очень гибким. Протокол можно модифицировать под каждую конкретную задачу, а использование хорошо зарекомендовавших себя стандартов на передачу данных (HTTP/HTTPS) позволяет успешно применять его на любых платформах, где имеется его поддержка.

Уязвимость WordPress через файл xmlrpc.php. Решение есть!

2015-11-28 / Вр:01:02 / просмотров: 24973

Совсем недавно я позакрывал все дыры к адресу для входа в админ панель и думал, что все – атаки на вход админ панель прекратятся. Но я был абсолютно неправ, вечером мне пришло сообщение, что было заблокировано еще два IP адреса, которые ломились в админ (плагин limit login attempts).

Я был в шоке, как им это удается?

Но, так как у меня на WordPress установлен плагин «WordPress Firewall 2», мне пришло на почту уведомление о том, что были две атаки на файл «xmlrpc.php» .

Заметьте, IP адреса совершенно одинаковы как в первом скриншоте, так и во втором. Значит, взломщик не использовал для взлома прямой адрес для входа в админ, он это делал через «xmlrpc.php» (мои догадки и они могут быть спорными).
Почитал в интернете о файле «xmlrpc.php» и оказалось действительно, что это файл является дверью для взломщика, которая плохо защищенная. Именно большинство атак происходит благодаря этой лазейке, которая по умолчанию включена на всех сайтах WordPress. Вот те на! Называется, защитил свой блог. Это все равно, что позакрывал все окна и двери от вора на замки, но черный вход оставил открытым!

Нужен ли файл «xmlrpc.php»?
Прочитав некоторую информацию, я понял, что файл «xmlrpc.php» не такой уж и важен для WordPress. Просто с его помощью можно управлять блогом через различные приложения. Не знаю как вы, но я этой возможностью не пользуюсь, значит, зачем мне этот файл нужен, тем более, если он еще такой уязвимый. Будем отключать файл «xmlrpc.php» !

Чтобы отключить файл «xmlrpc.php» , для самых ленивых рекомендуют использовать плагин «Disable XML-RPC». А поскольку мы не такие, то все сделаем сами, тем более это не сложно.

Зайдите в файл функции темы «functions.php» и в самом конце файла перед знаком « ?> » вставьте вот этот код:

Зайдите в файл «header.php» и найдите вот такую строчку:

В файле «.htaccess» в самом конце вставьте вот такой код:

Этим кодом мы всем запретим доступ к файлу «xmlrpc.php» .
Я думаю, этого достаточно!

С сегодняшнего дня я буду тестировать результат в течение месяца. Если за этот период не появится новая статья о том, что снова кто-то лезет в админку, значит задача решена и можно на некоторое время расслабиться .

На сегодня все! Надеюсь, что статья была вам полезна, так как защита блога – это всегда важно и актуально.

Интересно, какие еще загадки и сюрпризы таит в себе мой любимый движок WordPress?

Что такое Xmlrpc.php для WordPress и как его отключить

Xmlrpc.php в WordPress используется для удаленного доступа к вашему сайту, через сторонние приложения. Данный инструмент появился, когда WordPress только зарождался и скорость интернета не позволяла быстро создавать и публиковать записи на сайт. Существовал офлайн-клиент, в котором администратор создавал и редактировал записи, а затем через xmlrpc.php записи публиковались на сайт.

В 2008 году было выпущено приложение WordPress для iPhone и поддержка XML-RPC была включена по умолчанию, без возможности отключить.

Зачем отключать xmlrpc.php?

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

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

Проверить можно с помощью XML-RPC Validator. Для этого:

В поле Address введите ваш домен и нажмите Check:

Если вы получили сообщение «Congratulation! Your site passed the first check», то xmlrpc.php на вашем сайте включен.

Если ответ «Failed to check your site at http://domain.ru because of the following error», то xmlrpc.php отключен.

Чтобы отключить XML-RPC выберите нужную инструкцию:

Чтобы отключить XML-RPC, достаточно установить плагин Disable XML-RPC и активировать его. Он автоматически укажет необходимые настройки и закроет доступ через xmlrpc.php.

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

Если вы хотите сделать все вручную без установки плагина:

Откройте или создайте (если он отсутствует) файл .htaccess и вставьте в конце файла строки:

Что такое XML-RPC и как остановить атаку на WordPress

Главное меню » Блог-платформа wordpress » Что такое XML-RPC и как остановить атаку на WordPress

Включен ли XML-RPC на вашем веб-сайте на WordPress?

Быстрый способ проверить, является ли ваш сайт уязвимым, – это посетить следующий URL-адрес из браузера:

Если он включен, вы должны получить ответ, в котором говорится, что «сервер XML-RPC принимает только запросы POST».

Опасности и преимущества XML-RPC

В сообществе безопасности WordPress было много вопросов о XML-RPC. В основном есть две проблемы:

  1. XML-RPC можно использовать для DDoS-атаки
  2. Его можно использовать для повторного использования комбинаций имени пользователя и пароля

По крайней мере, это было возможно. С тех пор WordPress подключил лазейки (https://core.trac.wordpress.org/ticket/34336) , которые позволили людям одновременно попробовать сотни имен пользователей и паролей. Начиная с версии 4.4, она была улучшена. Теперь WordPress будет молча выполнять все последующие попытки входа в систему, как только один вызов XML-RPC завершился неудачно. Большой!

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

Метод 1: Отключение Pingbacks

Это процесс, который использует ваш сервер в качестве невольного участника в атаке на другой сервер. В основном, кто-то говорит вашему сайту «Эй, этот URL-адрес, связанный с вашим блогом!», А затем ваш сайт отвечает «pingback» на этот URL. Кроме того, нет никакой проверки, что URL на самом деле сделал ссылку на вас. Сделайте это с сотнями уязвимых сайтов WordPress, и у вас есть DDoS-атака на ваших руках! Самый простой способ запретить использование вашего сайта таким образом – добавить следующий код в функции functions.php вашей темы:

Способ 2. Предотвращение всех запросов на аутентификацию через XML-RPC

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

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

Для этого введите этот код в functions.php:

Важно отметить, что это не то же самое, что и первый метод. Этот код только отключает методы проверки подлинности и оставляет все остальные нетронутыми – например, pingbacks.

Способ 3: Отключить доступ к xmlrpc.php

Это самый экстремальный метод, который полностью отключает все функции XML-RPC. Он требует, чтобы вы редактировали файл .htaccess в корневом каталоге вашего WordPress. Добавьте следующий код вверху:

Теперь, когда действуют выше правила отказа, попытка доступа к xmlrpc.php будет выполняться со следующей страницей:

И это все, что нужно. Вы успешно отключили XML-RPC на своем сайте WordPress.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

И опять атака на сайты WordPress — перебор + XMLRPC

С полудня субботы на моем сервере, где хостится около 25 сайтов на WordPress, начались дикие тормоза. Так как мне удалось пережить предыдущие атаки (атака 1 — ровно год назад, атака 2 — в марте) не замеченными, то я не сразу понял, в чем дело.

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

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

Эти приемы скорее всего всем известны, но я наступил на пару граблей, которых не нашел в описаниях — вдруг это кому-то сэкономит время.

1. Останавливаем перебор, плагин Limit Login Attempts — ставим именно его, так как другие защиты сильно подвешивают сервер, например, при использовании плагина Login Security Solution сервер умер через полчаса, плагин сильно грузит базу.

В настройке обязательно включите галочку «За прокси» — иначе он будет для всех определять ip вашего сервера и автоматически блокировать всех.
UPDATE, спасибо DarkByte, подробности ниже в комментах — галочку «За прокси» включаем только если не работает определение при включенном «Прямое подключение»

2. Отключаем XML-RPC — плагин Disable XML-RPC (его просто активировать и всё).

3. Закрываем wp-login.php — если обращаться к сайту через ip, то плагин не срабатывает и подборщики продолжают долбить сайт. Чтобы этого избежать, в .htaccess добавляем:

Файл wp-login копируем, переименовываем в любое странное имя, например poletnormalny.php и внутри файла автозаменой меняем все надписи wp-login.php на poletnormalny.php.
Все, теперь к админке можно обратиться только по вашему файлу.

После этих 3 несложных шагов сайты опять начали летать и пришло спокойствие.

Igorkam

Ярлыки

  • С++ (3)
  • Стихи (1)
  • тонировка (1)
  • Цитаты (2)
  • ALTlinux (1)
  • Apache (2)
  • big-endian (1)
  • Blogger (1)
  • books (3)
  • books links (1)
  • Buisness (10)
  • C (1)
  • C# (5)
  • c++ (27)
  • car (8)
  • Cheat (1)
  • CSS (1)
  • DLL (1)
  • Draw (1)
  • Eclipse (2)
  • Films (1)
  • Firefox (4)
  • Flash (1)
  • GTK (2)
  • GUI (1)
  • Home server (1)
  • Hotels (1)
  • HTML (6)
  • IE (1)
  • Internet (2)
  • Java (1)
  • JavaScript (6)
  • jQuery (1)
  • KDE (1)
  • KeeTouch (1)
  • Linux (34)
  • little-endian (1)
  • Makefile (1)
  • MFC (6)
  • multi-thread (2)
  • Music (1)
  • ODBC (2)
  • OpenBox (2)
  • photo (4)
  • PHP (38)
  • programing (2)
  • proxy (1)
  • QML (37)
  • Qt (41)
  • QtCreator (2)
  • RegExp (3)
  • Shopping (12)
  • shutdown (1)
  • Soft (1)
  • Sound Card (1)
  • SQL (1)
  • SQL Server (14)
  • Subversion (1)
  • SVN (1)
  • teach (4)
  • text-editor (1)
  • Travels (1)
  • Ubuntu (38)
  • Upstart (1)
  • Vi (2)
  • VirtualBox (2)
  • Virtualization (1)
  • vkontakte.ru (1)
  • Web (2)
  • Web-Kit (5)
  • WinAPI (7)
  • Windows (4)

понедельник, 17 января 2011 г.

PHP XML-RPC server

1. Определяем функции, которые будут доступны клиенту. Для примера напишем функцию сложения двух чисел:
Любая функция, регистрируемая на xml-rpc сервере, должна принимать 3 параметра:

$MethodName — внешнее имя функции;
$Params — массив параметров, передаваемых клиентом;
$AppData — дополнительные параметры, передаваемые при вызове функции xmlrpc_server_call_method().

2. Создаем XML-RPC сервер вызовом функции

3. Регистрируем на сервере, определенные ранее функции

xmlrpc_server_register_method($srv, «Add», «srvAdd»);

Здесь:
Add — внешнее имя функции srvAdd,
srv — handler сервера.

4. Получаем «сырой» запрос от клиента

5. Передаем запрос в диспетчер функций, который автоматически определит какую функцию вызвать.

$response = xmlrpc_server_call_method($srv, $xmlRequest, Null);

Здесь:
$srv — handler xml-rpc сервера;
$xmlRequest — данные от клиента в xml-формате;
Третий параметр, в данном случае пустой, передает дополнительные данные для определенных ранее функций (параметр $AppData).

6. Отдаем клиенту результаты работы функции

Илон Маск рекомендует:  Атрибуты элементов
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL