Введення у XML-RPC. Змагання з програмування Що видно у логах сервера


His post also shows how to do browser authentication, as below:
$request = xmlrpc_encode_request ("methodName", array("methodParam"));
$auth = base64_encode ($username . ":" . $password );
$header = (version_compare (phpversion (), "5.2.8"))
? array("Content-Type: text/xml" , "Authorization: Basic $auth " )
: "Content-Type: text/xml\r\nAuthorization: Basic$ auth "; //
$context = stream_context_create (array("http" => array(
"method" => "POST" ,
"header" => $header ,
"content" => $request
)));
$webservice = "http://www.example.com/rpc";
$file = file_get_contents ($webservice, false, $context);
$response = xmlrpc_decode ($file);
if (xmlrpc_is_fault ($response )) (
return "xmlrpc: $response [ faultString ] ($response [ faultCode ] )" ;
) else (
return $response;
}
?>
1 - EDITOR NOTE: THIS IS A FIX FROM "SandersWang dt php на gmail dot com"

16 років тому

binary strings (set with xmlrpc_set_type) go into a ...block like you"d expect. Але після всього 80-го характеру, це функція вказує на XML entity " ", який є в Unicode Newline, як це спричинить line-wrap, який є належним чином.

Можливо, це може бути, це викликає реальні проблеми для деяких XML-RPC серверів, так як http://jakarta.apache.org/xmlrpc/ (nee Helma). Stripping out those entities with something як

$req = preg_replace("//", "", xmlrpc_encode_request("my.method", $args));

works around the problem.

11 років тому

Вона повинна бути усвідомлена, що вказівки, які не мають на увазі будь-який термін, точніше, що в XML header.

Мають проблеми з двома-накопичуваними UTF strings, щоб бути внесені в 데이터베이스, коли використовує цю функцію, щоб переконатися, що це apache xml-rpc servlet and storing it in mysql database. Це було вирішено під час встановлення "escaping" на just "markup" і "encoding" to "UTF-8" (don't forget to set "utf-8" in xmlrpc_decode too).

Це sems, що UTF-8 вказані strings gets escaped with their bytes as entities instead of their characters as entites.

9 років тому

Ever tried transmitting array як following with xmlrpc?
$ var1 = array (7 => 14,9 => 18);

The output array looks quite different! It will look like that:
$ var2 = array (14,18);

Тільки Solution і Found is to prepend a space to the index:
$var3=array("7"=>14,"9"=>18);

Використовуючи цей метод, ви можете отримати результат. ($var1)

16 років тому

Ця функція повинна бути використана для XML-RPC клієнта для створення XML payload for XML-RPC request;

$params = "system.methodSignature" ;
$method = "system.methodHelp";
$request = xmlrpc_encode_request ($method, $params);
echo ($ request);
?>

Produces;



system.methodHelp

system.methodSignature



Second argument recognises the type of variable and generates the correct XML-RPC structure. See xmlrpc_encode() for more details.

12 років тому

Simple OO client with function Overload:

php metho test_helloworld is translated to xmlrpc method test.helloworld.

class RpcClient (

Private $_methods;
private $_context;
private $_url;

Function __construct ($url, $user, $passwd) (
$auth = base64_encode(sprintf("%s:%s", $user,$passwd));
$this->_context = stream_context_create(array(
"http" => array(
"method" => "POST",
"header" => "Content-Type: text/xml\r\n".
"Authorization: Basic $auth" ,

)
));
$this->_url = $url;

$this->registerMethod ("Test_HelloWorld");

Function __call($methodName, $params) (
if (array_key_exists($methodName,$this->_methods)) (
// on appelle la fonction RPC
$m = str_replace("_", ".", $methodName);
$r = xmlrpc_encode_request($m, $params,array("verbosity"=>"newlines_only"));
$c = $this->_context;
stream_context_set_option($c,"http","content",$r);
$f = file_get_contents($this->_url,false,$c);
$resp = xmlrpc_decode($f);
return $resp;
) else (
// on appelle la fonction de l"objet
call_user_method_array($methodName, $this,$params);
}
}

Private function registerMethod ($method) (
$this->_methods[$method] = true;
}

Введення в XML-RPC

У Мережі є багато різних ресурсів, які надають користувачам певну інформацію. Маються на увазі не типові статичні сторінки, а, наприклад, дані, що витягуються з бази даних чи архівів. Це може бути архів фінансових даних (курси валют, дані котирувань цінних паперів), дані про погоду, або більш об'ємна інформація - новини, статті, повідомлення з форумів. Така інформація може представлятися відвідувачеві сторінки, наприклад, через форму, як відповідь на запит, або щоразу генеруватися динамічно. Але труднощі в тому, що часто така інформація потрібна не так кінцевому користувачеві - людині, як іншим системам, програмам, які ці дані будуть використовувати для своїх розрахунків або інших потреб.

Реальний приклад: сторінка банківського сайту, де показуються котирування валют. Якщо ви заходите на сторінку як звичайний користувач через браузер, ви бачите все оформлення сторінки, банери, меню та іншу інформацію, яка "обрамляє" справжню мету пошуку - котирування валют. Якщо вам потрібно вносити ці котирування до свого інтернет-магазину, то нічого іншого не залишиться, як тільки вручну виділити потрібні дані та через буфер обміну перенести на свій сайт. І так доведеться робити щодня. Невже нема виходу?

Якщо вирішувати проблему "в лоб", то відразу напрошується рішення: програма (скрипт на сайті), якій треба дані, отримує сторінку від сервера як "звичайний користувач", розбирає (парсит) отриманий HTML-код і виділяє з нього потрібну інформацію. Це можна зробити або звичайним регулярним виразом, або за допомогою будь-якого html-парсера. Складність підходу – у його неефективності. По-перше, для отримання невеликої порції даних (дані про валюти - це буквально десяток-другий символів) треба отримувати всю сторінку, а це не менше кількох десятків кілобайт. По-друге, при будь-якій зміні коду сторінки, наприклад, дизайн змінився або ще щось, наш алгоритм аналізу доведеться переробляти. Та й ресурсів це відбиратиме порядно.

Тому розробники дійшли рішення - треба розробити якийсь універсальний механізм, який би дозволив прозоро (на рівні протоколу та середовища передачі) і легко обмінюватися даними між програмами, які можуть знаходитися будь-де, бути написаними будь-якою мовою і працювати під управлінням будь-якої операційної системи та на будь-якій апаратній платформі. Такий механізм називають зараз гучними термінами "Веб-сервіси" (web-service), "SOAP", "архітектура, орієнтована на сервіси" (service-oriented architecture). Для обміну даними використовуються відкриті і перевірені часом стандарти - передачі повідомлень протокол HTTP (хоча можна використовувати інші протоколи - SMTP наприклад). Самі дані (у нашому прикладі – курси валют) передаються упакованими у крос-платформний формат – у вигляді XML-документів. Для цього придумано спеціальний стандарт - SOAP.

Так, зараз веб-сервіси, SOAP і XML у всіх на слуху, їх починають активно впроваджувати і великі корпорації типу IBM і Microsoft випускають нові продукти, покликані допомогти тотальному впровадженню веб-сервісів.

Але! Для нашого прикладу з курсами валют, які повинні передаватися з сайту банку в двигун інтернет-магазину, таке рішення буде дуже складним. Адже тільки опис стандарту SOAP займає непристойні півтори тисячі сторінок, і це ще не все. Для практичного використання доведеться вивчити ще роботу зі сторонніми бібліотеками та розширеннями (тільки починаючи з PHP 5.0 до нього входить бібліотека для роботи з SOAP), написати сотні та тисячі рядків свого коду. І все це для отримання кількох літер і цифр - явно дуже важко й нераціонально.

Тому існує ще один, з натяжкою можна сказати альтернативний стандарт на обмін інформацією – XML-RPC. Він був розроблений за участю Microsoft компанією UserLand Software Inc і призначений для уніфікованої передачі даних між програмами через Інтернет. Він може замінити SOAP при побудові простих сервісів, де не потрібні всі "корпоративні" можливості справжніх веб-сервісів.

Що означає абревіатура XML-RPC? RPC розшифровується як Remote Procedure Call – віддалений виклик процедур. Це означає, що програма (неважливо, скрипт на сервері або звичайна програма на клієнтському комп'ютері) може прозоро використовувати метод, який фізично реалізований та виконується на іншому комп'ютері. XML тут застосовується для забезпечення універсального формату опису даних, що передаються. Як транспорт для передачі повідомлень застосовується протокол HTTP, що дозволяє безперешкодно обмінюватися даними через будь-які мережеві пристрої - маршрутизатори, фаєрволи, проксі-сервера.

І так, для використання треба мати: сервер XML-RPC, який надає один або кілька методів, клієнт XML-RPC, який може формувати коректний запит та обробляти відповідь сервера, а також знати необхідні для успішної роботи параметри сервера - адресу, назву методу та параметри, що передаються.

Вся робота з XML-RPC відбувається в режимі "запит-відповідь", в цьому є одна з відмінностей технології від стандарту SOAP, де є і поняття транзакцій, і можливість робити відкладені виклики (коли сервер зберігає запит і відповідає на нього в певний час в майбутньому). Ці додаткові можливості більше стануть у нагоді для потужних корпоративних сервісів, вони значно ускладнюють розробку та підтримку серверів, і ставлять додаткові вимоги до розробників клієнтських рішень.

Процедура роботи з XML-RPC починається із формування запиту. Типовий запит має такий вигляд:

POST/RPC2 HTTP/1.0
User-Agent: eshop-test/1.1.1 (FreeBSD)
Host: server.localnet.com
Content-Type: text/xml
Content-length: 172



TestMetod
Привіт XML-RPC!


У перших рядках формується стандартний заголовок HTTP запиту POST. До обов'язкових параметрів належать host, тип даних (MIME-тип), який має бути text/xml, а також довжина повідомлення. Також у стандарті вказується, що поле User-Agent має бути заповнене, але може мати довільне значення.

Далі йде типовий заголовок XML-документа. Кореневий елемент запиту - , може бути тільки один, і не може містити таких вузлів як дочірні. Це означає, що одним запитом можна викликати лише один метод на сервері.

Рядок TestMetodвказує на те, що ми викликаємо метод з ім'ям TestMetod. При необхідності тут можна вказувати ім'я програми або модуля, що містить метод, а також шлях до нього. Специфікація XML-RPC хоч і накладає деякі обмеження на набір символів, якими може бути позначений метод, але як їх інтерпретувати - залежить від реалізації сервера.

Далі задаються параметри, що передаються. Для цього є секція Яка може містити довільну кількість поделементів Які містять параметр, що описується тегом . Параметри та типи даних ми розглянемо трохи далі. У варіанті методу передається один рядковий параметр, укладений в тег .

Після опису всіх параметрів слідують теги, що закривають. Запит та відповідь у XML-RPC – це звичайні документи XML, тому всі теги обов'язково повинні бути закриті. А ось одиночних тегів у XML-RPC немає, хоча у стандарті XML вони є.

Тепер розберемо відповідь сервера. Заголовок HTTP відповіді звичайний, якщо запит успішно оброблений, сервер повертає відповідь HTTP/1.1 200 OK. Також, як у запиті, слід коректно вказати MIME-тип, довжину повідомлення та дату формування відповіді.

Саме тіло відповіді таке:



true


Тепер замість кореневого тегу вказується тег , який вкладені відразу результати обробки запиту. На жаль, у відповіді не передається ім'я методу, тому вам слід зберегти його на стороні клієнта, щоб уникнути плутанини, якщо одночасно викликаються різні методи.

Якщо під час обробки вашого запиту сталася помилка, то замість У відповіді буде елемент , В якому буде вкладена структура, що описує помилку. Опис помилки містить числовий код помилки та її текстовий опис.

А тепер розглянемо коротко типи даних у XML-RPC. Усього типів даних є 9 - сім простих типів та 2 складних. Кожен тип описується власним тегом або набором тегів (для складних типів).

Прості типи:

Цілі числа- тег або ;

Логічний тип- тег може приймати як значення 0/1, так і true/false;

ASCII-рядок- описується тегом і може містити довільний рядок символів;

Числа з плаваючою точкою- тег можуть також містити знак числа, дробова частина відокремлюється точкою;

дата та час- описується тегом та має відповідати формату iso8601. Для подальшої обробки в скриптах такий формат трохи незручний, тому його завжди конвертують під час надсилання/отримання запиту. Це може виконувати спеціальна функція у складі бібліотеки, або, якщо такої немає, розробник повинен конвертувати дату вручну.

Останнім простим типом є рядок, закодований у base64, яка описується тегом . Цей тип універсальний, з його допомогою можна передавати будь-які дані між клієнтом і сервером, хоча обсяг даних, що передаються через таке кодування зростає. Але це наслідок текстової природи протоколу і формату XML зокрема.

Складні типи представлені структурами та масивами. Структура визначається кореневим елементом , який може містити довільну кількість елементів , Що визначають кожен член структури. Член структури описується двома тегами: перший, , описує ім'я члена, другий, містить значення члена (разом з тегом, що описує тип даних).

Масиви не мають назв і описуються тегом , який містить один елемент , та один або кілька дочірніх елементів де задаються конкретні дані. Масив може містити будь-які інші типи у довільному порядку, а також інші масиви, що дозволяє описувати багатовимірні масиви. Також можна описувати масив структур. Але те, що масив не має імені, ускладнює в деяких випадках його використання, для передачі складних даних їх доводиться багаторазово упаковувати в інші типи (наприклад, щоб передати кілька масивів, можна кожен масив окремо упаковати в структуру, а потім створити один масив з цих структур).

Звичайно, хтось скаже, що такий перелік типів даних дуже бідний і не дозволяє розвернутися. Так, якщо треба передавати складні об'єкти або великі обсяги даних, то краще використовувати SOAP. А для невеликих, невибагливих додатків цілком підходить і XML-RPC, більш того, дуже часто навіть його можливостей виявляється дуже багато! Якщо врахувати легкість розгортання, дуже велика кількість бібліотек майже для будь-яких мов і платформ, широку підтримку в PHP, то XML-RPC часто просто не має конкурентів. Хоча відразу радити його як універсальне рішення не можна - у кожному конкретному випадку треба вирішувати за обставинами.

Технологія XML-RPC застосовується в системі WordPress для різних приємних фішок на кшталт пінгбеків, трекбеків, віддаленого керування сайтом без входу в адмінку тощо. На жаль, зловмисники можуть використовувати її для DDoS атак на сайти. Тобто ви створюєте красиві цікаві WP проекти для себе або на замовлення і при цьому, нічого не підозрюючи, можете бути частиною ботнета для DDoS`а. Поєднуючи докупи десятки і сотні тисяч майданчиків, погані люди створюють потужну атаку на свою жертву. Хоча ваш сайт також страждає, т.к. навантаження йде на хостинг, де його розміщено.

Свідченням такої негативної активності може бути логи сервера (access.log в nginx), містять такі рядки:

103.238.80.27 - - «POST /wp-login.php HTTP/1.0» 200 5791 "-" "-"

Але повернемось до вразливості XML-RPC. Візуально вона проявляється у повільному відкритті сайтів на вашому сервері або ж неможливістю їх завантаження взагалі (502 помилка Bad Gateway). У тех.підтримці мого хостера FASTVPS підтвердили припущення і порадили:

  1. Оновити WordPress до останньої версії разом із плагінами. Взагалі, якщо ви стежите за , то могли читати необхідність встановлення останньої 4.2.3. через критичні зауваження в безпеці (так само як і попередні версії). Коротше кажучи, корисно оновлюватися.
  1. Встановити плагін Disable XML-RPC Pingback.

Відключення XML-RPC у WordPress

Раніше, як мені здається, опція увімкнення/відключення XML-RPC була десь у налаштуваннях системи, проте зараз не можу її там знайти. Тому найпростіший спосіб позбутися її — використовувати відповідний плагін.

Знайти та завантажити Disable XML-RPC Pingback або встановивши його безпосередньо з адмінки системи. Вам не потрібно нічого додатково налаштовувати, модуль відразу починає працювати. Він видаляє методи pingback.ping та pingback.extensions.getPingbacks з інтерфейсу XML-RPC. Крім того, видаляє X-Pingback із HTTP заголовків.

В одному з блогів знайшов ще кілька варіантів видалення відключення XML-RPC.

1. Вимкнення XML-RPC у шаблоні.

Для цього у файл функцій теми functions.php додається рядок:

Order Deny,Allow Deny from all

Останні два методи особисто не використовував, т.к. підключив плагін Disable XML-RPC Pingback - думаю, його буде достатньо. Просто для тих, хто не любить зайві настанови, запропонував альтернативні варіанти.

З полудня суботи на моєму сервері, де хоститься близько 25 сайтів на Wordpress, почалися дикі гальма. Оскільки мені вдалося пережити попередні атаки ( , ) не поміченими, то я не відразу зрозумів, у чому справа.

Коли розібрався, з'ясувалося, що йде перебір паролів + безліч запитів до XMLRPC.

В результаті вдалося все це відсікти, хоча і не відразу. По катом три простих прийоми, як цього уникнути.

Ці прийоми швидше за все відомі, але я настав на пару граблів, яких не знайшов в описах - раптом це комусь заощадить час.

1. Зупиняємо перебір, плагін Limit Login Attempts - ставимо саме його, оскільки інші захисту сильно підвішують сервер, наприклад, при використанні плагіна Login Security Solution сервер помер через півгодини, плагін сильно вантажить базу.

У налаштуванні обов'язково увімкніть галочку «За проксі» - інакше він для всіх визначатиме ip вашого сервера і автоматично блокуватиме всіх.
UPDATE, дякую, подробиці нижче в коментах - галочку «За проксі» включаємо тільки якщо не працює визначення при включеному «Пряме підключення»

2. Відключаємо XML-RPC - плагін Disable XML-RPC (його просто активувати і все).

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

Order Deny,Allow Deny from all

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

Після цих трьох нескладних кроків сайти знову почали літати і прийшов спокій.

Ну і раптом цікаво

Один із варіантів як подивитися, що вас атакують. Це можна побачити в логах nginx (наприклад, шлях для Debian /var/log/nginx файл access.log).

У WordPress завжди був убудований інструмент для віддаленого звернення до вашого сайту. Справді, іноді потрібно дістатися свого сайту, а комп'ютер далеко від вас. Довгий час рішенням був файл під назвою xmlrpc.php. Однак останні роки цей файл став більшою проблемою, аніж рішенням.

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

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:

# Block WordPress xmlrpc.php requests order deny,allow deny from all allow from 123.123.123.123

Заключні думки

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

Щоб ваш сайт залишався в безпеці, рекомендується повністю відключити xmlrpc.php, якщо вам не потрібні деякі функції, необхідні для віддаленої публікації та плагіна Jetpack. Потім можна використовувати обхідні плагіни, які дозволяють використовувати ці функції, при цьому виправляючи дірки в безпеці.

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

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