XML-RPC ga kirish. Dasturlash musobaqalari Server jurnallarida nima ko'rinadi


Uning posti, shuningdek, quyida ko'rsatilgandek, brauzer autentifikatsiyasini qanday amalga oshirishni ko'rsatadi:
$request = xmlrpc_encode_request ("methodName" , massiv("methodParam" ));
$auth = base64_encode ($username . ":" . $parol );
$header = (versiya_qiyoslash(phpversion(), "5.2.8"))
? massiv("Tarkib turi: matn/xml", "Avtorizatsiya: Basic $auth ")
: "Kontent turi: matn/xml\r\nAvtorizatsiya: Asosiy$auth "; //
$context = stream_context_create (massiv("http" => massiv(
"method" => "POST" ,
"header" => $header,
"content" => $so'rov
)));
$webservice = "http://www.example.com/rpc";
$file = file_get_contents($webservice, false, $kontekst);
$response = xmlrpc_decode ($file);
agar (xmlrpc_is_fault($response)) (
return "xmlrpc: $response [ faultString ] ($response [ faultCode ] )" ;
) boshqa (
$response ni qaytarish;
}
?>
1 - MUHARRIRIGA Izoh: BU "SandersWang dt php at gmail dot com" dan tuzatish.

16 yil oldin

Ikkilik satrlar (xmlrpc_set_type bilan o'rnatiladi) a ichiga kiradi ...Siz kutgandek blokirovka qiling. Lekin har 80-belgidan keyin bu funksiya Unicode yangi qatori boʻlgan XML obʼyektini “ “ qoʻyadi, goʻyo satrlarni oʻrashga olib keladi va bu ahmoqona.

Garchi bu ahmoqona bo'lsa ham, bu ba'zi XML-RPC serverlari uchun haqiqiy muammolarni keltirib chiqaradi, masalan, http://jakarta.apache.org/xmlrpc/ (nee Helma). O'sha ob'ektlarni shunga o'xshash narsalar bilan olib tashlash

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

muammo atrofida ishlaydi.

11 yil oldin

Shuni ta'kidlash kerakki, kodlash hech narsani kodlamaydi, faqat XML sarlavhasiga nima kirganini belgilang.

Ushbu funktsiyadan foydalanganda, uni apache xml-rpc servletiga yuborish va MySQL ma'lumotlar bazasida saqlashda ikki tomonlama kodlangan UTF satrlarini ma'lumotlar bazasiga saqlash bilan bog'liq muammolarga duch keldik. Bu "qochish" ni faqat "belgilash" ga va "kodlash" ni "UTF-8" ga o'rnatish orqali hal qilindi (xmlrpc_decode da "utf-8" ni o'rnatishni unutmang).

Ko'rinishidan, UTF-8 kodlangan satrlari ob'ektlar sifatida belgilar o'rniga baytlari bilan qochib ketadi.

9 yil oldin

Hech qachon xmlrpc bilan quyidagi kabi massivni uzatishga harakat qilganmisiz?
$var1=massiv(7=>14,9=>18);

Chiqish massivi butunlay boshqacha ko'rinadi! Bu shunday ko'rinadi:
$var2=massiv(14,18);

Men topgan yagona yechim indeksga bo'sh joy qo'yishdir:
$var3=massiv(" 7"=>14," 9"=>18);

Ushbu usuldan foydalanib, siz to'g'ri natijaga erishasiz. ($var1)

16 yil oldin

Bu funksiyadan XML-RPC mijozi XML-RPC so'rovi uchun XML foydali yukini yaratish uchun foydalanishi kerak;

$params = "system.methodSignature" ;
$metod = "system.methodHelp" ;
$request = xmlrpc_encode_request ($metod, $params);
echo ($ so'rov);
?>

Ishlab chiqaradi;



system.methodHelp

system.methodIzo



Ikkinchi argument o'zgaruvchining turini taniydi va to'g'ri XML-RPC strukturasini yaratadi. Batafsil ma'lumot uchun xmlrpc_encode() ga qarang.

12 yil oldin

Haddan tashqari yuk funksiyasiga ega oddiy OO mijozi:

php usuli test_helloworld xmlrpc usuli test.helloworldga tarjima qilingan.

sinf RpcClient(

xususiy $_methods;
shaxsiy $_kontekst;
shaxsiy $_url;

Funktsiya __construct ($url, $user, $passwd) (
$auth = base64_encode(sprintf("%s:%s", $user,$passwd));
$this->_context = stream_context_create(massiv(
"http" => massiv(
"metod" => "POST",
"header" => "Tarkib turi: text/xml\r\n".
"Avtorizatsiya: Asosiy $auth",

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

$this->registerMethod("Test_HelloWorld");

Funktsiya __call($methodName, $params) (
agar (massiv_kalit_mavjud($methodName,$this->_methods)) (
// appelle la fonction RPC-da
$m = str_replace("_", ".", $methodName);
$r = xmlrpc_encode_request($m, $params,array("verbosity"=>"faqat yangi qatorlar"));
$c = $this->_kontekst;
stream_context_set_option($c,"http","kontent",$r);
$f = file_get_contents($this->_url,false,$c);
$resp = xmlrpc_decode($f);
$respni qaytarish;
) boshqa (
// on appelle la fonction de l"objet
call_user_method_array($methodName, $this,$params);
}
}

Xususiy funktsiya registrMethod ($metod) (
$this->_methods[$method] = true;
}

XML-RPC ga kirish

Internetda foydalanuvchilarga ma'lum ma'lumotlarni taqdim etadigan juda ko'p turli xil manbalar mavjud. Bu oddiy statik sahifalarni anglatmaydi, lekin, masalan, ma'lumotlar bazasi yoki arxivdan olingan ma'lumotlar. Bu moliyaviy ma'lumotlar arxivi (valyuta kurslari, qimmatli qog'ozlar kotirovkalari), ob-havo ma'lumotlari yoki yanada kengroq ma'lumotlar - yangiliklar, maqolalar, forumlardan xabarlar bo'lishi mumkin. Bunday ma'lumotlar sahifaga tashrif buyuruvchiga, masalan, ariza orqali, so'rovga javob sifatida taqdim etilishi mumkin yoki har safar dinamik ravishda yaratilishi mumkin. Ammo qiyinchilik shundaki, bunday ma'lumotlar ko'pincha oxirgi foydalanuvchi - odamga emas, balki ushbu ma'lumotlarni o'z hisob-kitoblari yoki boshqa ehtiyojlari uchun ishlatadigan boshqa tizimlar va dasturlarga kerak bo'ladi.

Haqiqiy misol: valyuta kotirovkalarini aks ettiruvchi bank veb-saytining sahifasi. Agar siz sahifaga oddiy foydalanuvchi sifatida brauzer orqali kirsangiz, siz barcha sahifa dizayni, bannerlar, menyular va qidiruvning asl maqsadini - valyuta kotirovkalarini "ramka" qiladigan boshqa ma'lumotlarni ko'rasiz. Agar siz ushbu kotirovkalarni onlayn-do'koningizga kiritishingiz kerak bo'lsa, kerakli ma'lumotlarni qo'lda tanlab, uni almashish buferi orqali veb-saytingizga o'tkazishdan boshqa hech narsa qolmaydi. Va buni har kuni qilishingiz kerak bo'ladi. Haqiqatan ham chiqish yo'li yo'qmi?

Agar siz muammoni o'z-o'zidan hal qilsangiz, darhol yechim paydo bo'ladi: ma'lumotlarga muhtoj bo'lgan dastur (veb-saytdagi skript) "oddiy foydalanuvchi" sifatida serverdan sahifa oladi, natijada olingan html kodni tahlil qiladi (tahlil qiladi) va uni chiqaradi. undan kerakli ma'lumotlar. Buni oddiy oddiy ifoda yordamida yoki istalgan HTML tahlilchisi yordamida amalga oshirish mumkin. Yondashuvning qiyinligi uning samarasizligidadir. Birinchidan, ma'lumotlarning kichik qismini olish uchun (valyutalar bo'yicha ma'lumotlar tom ma'noda o'nlab yoki ikki belgidan iborat), siz kamida bir necha o'nlab kilobaytni tashkil etadigan butun sahifani olishingiz kerak. Ikkinchidan, sahifa kodidagi har qanday o'zgarish bilan, masalan, dizayn o'zgargan yoki boshqa narsa bo'lsa, bizning tahlil qilish algoritmimiz qayta ishlanishi kerak bo'ladi. Va bu etarli miqdorda resurslarni talab qiladi.

Shu sababli, ishlab chiquvchilar bir qarorga kelishdi - har qanday joyda joylashgan, istalgan tilda yozilishi mumkin bo'lgan dasturlar o'rtasida shaffof (protokol va uzatish o'rta darajasida) va oson ma'lumotlarni almashish imkonini beradigan universal mexanizmni ishlab chiqish kerak. va har qanday operatsion tizim, tizimlar va har qanday apparat platformasida ishlaydi. Bunday mexanizm endi baland ovozda "Veb-xizmatlar", "SOAP", "xizmatga yo'naltirilgan arxitektura" deb ataladi. Ma'lumotlar almashinuvi uchun ochiq va vaqt sinovidan o'tgan standartlar qo'llaniladi - HTTP protokoli xabarlarni uzatish uchun ishlatiladi (garchi boshqa protokollardan foydalanish mumkin - SMTP, masalan). Ma'lumotlarning o'zi (bizning misolimizda, valyuta kurslari) o'zaro platforma formatida - XML ​​hujjatlari shaklida paketlangan holda uzatiladi. Shu maqsadda maxsus standart - SOAP ixtiro qilindi.

Ha, endi veb-xizmatlar, SOAP va XML barchaning og'zida, ular faol ravishda joriy etila boshlandi va IBM va Microsoft kabi yirik korporatsiyalar veb-xizmatlarni to'liq amalga oshirishga yordam beradigan yangi mahsulotlarni chiqarmoqda.

Lekin! Bank veb-saytidan onlayn-do'kon dvigateliga o'tkazilishi kerak bo'lgan valyuta kurslari bilan bizning misolimiz uchun bunday yechim juda qiyin bo'ladi. Axir, SOAP standartining tavsifi birgina odobsiz bir yarim ming sahifani egallaydi va bu hammasi emas. Amaliy foydalanish uchun siz uchinchi tomon kutubxonalari va kengaytmalari bilan ishlashni o'rganishingiz kerak (faqat PHP 5.0 dan boshlab u SOAP bilan ishlash uchun kutubxonani o'z ichiga oladi) va o'z kodingizning yuzlab va minglab qatorlarini yozishingiz kerak bo'ladi. Va bularning barchasi bir nechta harf va raqamlarni olish uchun juda mashaqqatli va mantiqsiz.

Shu sababli, boshqa, aytish mumkinki, ma'lumot almashinuvining muqobil standarti - XML-RPC. U Microsoft kompaniyasi ishtirokida UserLand Software Inc tomonidan ishlab chiqilgan va Internet orqali ilovalar o'rtasida yagona ma'lumotlarni uzatish uchun mo'ljallangan. Haqiqiy veb-xizmatlarning barcha "korxona" imkoniyatlari kerak bo'lmagan oddiy xizmatlarni qurishda u SOAPni almashtirishi mumkin.

XML-RPC qisqartmasi nimani anglatadi? RPC qisqartmasi “Remote Procedure Call” degan maʼnoni anglatadi. Bu shuni anglatadiki, dastur (xoh serverdagi skript bo'ladimi, xoh mijoz kompyuteridagi oddiy dastur bo'ladimi) boshqa kompyuterda jismoniy amalga oshiriladigan va bajariladigan usuldan shaffof foydalanishi mumkin. XML bu erda uzatiladigan ma'lumotlarni tavsiflash uchun universal formatni ta'minlash uchun ishlatiladi. Transport sifatida HTTP protokoli xabarlarni uzatish uchun ishlatiladi, bu sizga har qanday tarmoq qurilmalari - routerlar, xavfsizlik devorlari, proksi-serverlar orqali muammosiz ma'lumotlarni almashish imkonini beradi.

Shunday qilib, foydalanish uchun siz quyidagilarga ega bo'lishingiz kerak: bir yoki bir nechta usullarni ta'minlovchi XML-RPC serveri, to'g'ri so'rovni yaratadigan va server javobini qayta ishlay oladigan XML-RPC mijozi, shuningdek, muvaffaqiyatli ishlashi uchun zarur bo'lgan server parametrlarini biladigan - manzil, usul nomi va o'tgan parametrlar.

Вся работа с XML-RPC происходит в режиме "запрос-ответ", в этом и есть одно из отличий технологии от стандарта SOAP, где есть и понятия транзакций, и возможность делать отложенные вызовы (когда сервер сохраняет запрос и отвечает на него в определенное время kelajakda). Ushbu qo'shimcha funktsiyalar kuchli korporativ xizmatlar uchun foydaliroq bo'lib, ular serverlarni ishlab chiqish va qo'llab-quvvatlashni sezilarli darajada murakkablashtiradi va mijoz echimlarini ishlab chiquvchilarga qo'shimcha talablarni qo'yadi.

XML-RPC bilan ishlash tartibi so'rovni shakllantirishdan boshlanadi. Oddiy so'rov quyidagicha ko'rinadi:

POST /RPC2 HTTP/1.0
Foydalanuvchi agenti: eshop-test/1.1.1 (FreeBSD)
Xost: server.localnet.com
Kontent turi: matn/xml
Tarkib uzunligi: 172



Test usuli
Salom XML-RPC!


Birinchi qatorlar standart HTTP POST so'rov sarlavhasini tashkil qiladi. Kerakli parametrlarga xost, matn/xml bo'lishi kerak bo'lgan ma'lumotlar turi (MIME turi) va xabar uzunligi kiradi. Standart shuningdek, User-Agent maydonini to'ldirish kerakligini belgilaydi, lekin ixtiyoriy qiymatni o'z ichiga olishi mumkin.

Keyin XML hujjatining odatiy sarlavhasi keladi. So'rovning asosiy elementi , faqat bitta bo'lishi mumkin va bolalar kabi tugunlarni o'z ichiga olmaydi. Bu shuni anglatadiki, bitta so'rov serverda faqat bitta usulni chaqirishi mumkin.

Chiziq Test usuli TestMetod deb nomlangan usulni chaqirayotganimizni ko'rsatadi. Agar kerak bo'lsa, bu erda siz usulni o'z ichiga olgan dastur yoki modul nomini, shuningdek, unga yo'lni belgilashingiz mumkin. XML-RPC spetsifikatsiyasi, garchi u usulni belgilash uchun ishlatilishi mumkin bo'lgan belgilar to'plamiga ba'zi cheklovlar qo'ygan bo'lsa-da, ularni qanday talqin qilish butunlay serverning amalga oshirilishiga bog'liq.

Keyinchalik, uzatiladigan parametrlar o'rnatiladi. Buning uchun ushbu bo'lim ishlatiladi. Ixtiyoriy sonli kichik elementlarni o'z ichiga olishi mumkin Teg tomonidan tavsiflangan parametrni o'z ichiga oladi . Parametrlar va ma'lumotlar turlarini biroz keyinroq ko'rib chiqamiz. Bizning versiyamizda usul tegga kiritilgan bitta string parametridan o'tkaziladi .

Barcha parametrlarning tavsifidan keyin teglar yopishadi. XML-RPC-dagi so'rov va javob oddiy XML hujjatlaridir, shuning uchun barcha teglar yopiq bo'lishi kerak. Ammo XML-RPCda bitta teglar mavjud emas, garchi ular XML standartida mavjud bo'lsa ham.

Endi serverning javobini ko'rib chiqamiz. HTTP javob sarlavhasi normal; agar so'rov muvaffaqiyatli bajarilgan bo'lsa, server HTTP/1.1 200 OK javobini qaytaradi. Xuddi so'rovda bo'lgani kabi, siz MIME turini, xabar uzunligini va javobni yaratish sanasini to'g'ri belgilashingiz kerak.

Javob organining o'zi quyidagicha:



rost


Endi ildiz yorlig'i o'rniga teg ko'rsatilgan , bu so'rovni qayta ishlash natijalarini darhol o'z ichiga oladi. Afsuski, javob usul nomidan o'tmaydi, shuning uchun bir vaqtning o'zida turli usullar chaqirilsa, chalkashmaslik uchun uni mijoz tomonida saqlashingiz kerak.

Agar so'rovingizni qayta ishlashda xatolik yuz bergan bo'lsa, o'rniga Javob elementni o'z ichiga oladi , unda xatoni tavsiflovchi tuzilma joylashtiriladi. Xato tavsifida raqamli xato kodi va matn tavsifi mavjud.

Endi XML-RPC da ma'lumotlar turlarini qisqacha ko'rib chiqamiz. Hammasi bo'lib 9 ta ma'lumotlar turi mavjud - ettita oddiy va 2 ta murakkab. Har bir tur o'z tegi yoki teglar to'plami bilan tavsiflanadi (murakkab turlar uchun).

Oddiy turlar:

Butun sonlar- teg yoki ;

Boolean turi- teg , 0/1 va rost/noto‘g‘ri qiymatlarni qabul qilishi mumkin;

ASCII qatori- teg bilan tasvirlangan va ixtiyoriy belgilar qatorini o'z ichiga olishi mumkin;

Suzuvchi nuqta raqamlari- teg , son belgisi ham bo'lishi mumkin, kasr qismi nuqta bilan ajratilgan;

sana va vaqt- teg bilan tasvirlangan va iso8601 formatiga mos kelishi kerak. Skriptlarda keyingi ishlov berish uchun bu format biroz noqulay, shuning uchun so'rov yuborish/qabul qilishda u har doim o'zgartiriladi. Buni kutubxona ichidagi maxsus funktsiya orqali amalga oshirish mumkin, yoki agar mavjud bo'lmasa, ishlab chiquvchi sanani qo'lda aylantirishi kerak.

Oxirgi oddiy tur base64 kodlangan qator teg bilan tasvirlangan . Ushbu tur universaldir, u mijoz va server o'rtasida har qanday ma'lumotlarni uzatish uchun ishlatilishi mumkin, garchi bunday kodlash tufayli uzatilgan ma'lumotlar hajmi oshadi. Ammo bu protokolning matn tabiati va xususan XML formatining natijasidir.

Murakkab tiplar tuzilmalar va massivlar bilan ifodalanadi. Tuzilishi ildiz elementi bilan belgilanadi , unda ixtiyoriy sonli elementlar bo'lishi mumkin , strukturaning har bir a'zosini belgilash. Struktura a'zosi ikkita teg bilan tavsiflanadi: birinchidan, , a'zoning ismini tavsiflaydi, ikkinchisi, , a'zoning qiymatini o'z ichiga oladi (ma'lumotlar turini tavsiflovchi teg bilan birga).

Massivlarning nomlari yo'q va teg bilan tavsiflanadi unda bitta element mavjud , va bir yoki bir nechta yordamchi elementlar , bu erda aniq ma'lumotlar ko'rsatilgan. Massivda har qanday tartibda istalgan boshqa tiplar, shuningdek, ko‘p o‘lchovli massivlarni tavsiflash imkonini beruvchi boshqa massivlar bo‘lishi mumkin. Bundan tashqari, bir qator tuzilmalarni tasvirlashingiz mumkin. Ammo massivning nomi yo‘qligi uni ba’zi hollarda qo‘llashni qiyinlashtiradi; murakkab ma’lumotlarni uzatish uchun ularni qayta-qayta boshqa turlarga o‘rashga to‘g‘ri keladi (masalan, bir nechta massivlarni o‘tkazish uchun har bir massivni alohida strukturaga to‘plash mumkin). , va keyin ushbu tuzilmalardan bitta massiv yarating).

Albatta, kimdir ma'lumotlar turlarining bunday ro'yxati juda yomon va "kengaytirishga imkon bermaydi" deb aytadi. Ha, agar siz murakkab ob'ektlarni yoki katta hajmdagi ma'lumotlarni uzatishingiz kerak bo'lsa, unda SOAP dan foydalanish yaxshiroqdir. Kichik, oddiy ilovalar uchun XML-RPC juda mos keladi, bundan tashqari, ko'pincha uning imkoniyatlari juda ko'p bo'lib chiqadi! Joylashtirishning qulayligini, deyarli har qanday til va platformalar uchun juda ko'p sonli kutubxonalarni va PHP-da keng qo'llab-quvvatlashni hisobga olsak, XML-RPC ko'pincha raqobatchilarga ega emas. Uni universal yechim sifatida darhol tavsiya qilish mumkin bo'lmasa ham - har bir alohida holatda vaziyatga qarab qaror qabul qilish kerak.

XML-RPC texnologiyasi WordPress tizimida pingbacks, trackbacks, administrator paneliga kirmasdan saytni masofadan boshqarish kabi turli xil yoqimli xususiyatlar uchun ishlatiladi. Afsuski, tajovuzkorlar undan veb-saytlarga DDoS hujumlarini amalga oshirish uchun foydalanishlari mumkin. Ya'ni, siz o'zingiz yoki buyurtma berish uchun chiroyli, qiziqarli WP loyihalarini yaratasiz va shu bilan birga, hech narsadan shubhalanmasdan, siz DDoS botnetining bir qismi bo'lishingiz mumkin. O'nlab va yuz minglab saytlarni birlashtirib, yomon odamlar o'zlarining qurbonlariga kuchli hujum qilishadi. Garchi bir vaqtning o'zida saytingiz ham azob chekayotgan bo'lsa-da, chunki... yuk u joylashgan hostingga boradi.

Bunday yomon faoliyatning dalili quyidagi qatorlarni o'z ichiga olgan server jurnallarida (nginx-dagi access.log) bo'lishi mumkin:

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

Ammo XML-RPC zaifligiga qaytaylik. Vizual ravishda, bu sizning serveringizdagi saytlarning sekin ochilishida yoki ularni umuman yuklay olmaslikda namoyon bo'ladi (502 Bad Gateway xatosi). Mening FASTVPS xostimning texnik yordami mening taxminlarimni tasdiqladi va maslahat berdi:

  1. WordPress-ni plaginlar bilan birga eng so'nggi versiyasiga yangilang. Umuman olganda, agar kuzatsangiz, eng so'nggi 4.2.3 ni o'rnatish zarurligi haqida o'qigan bo'lishingiz mumkin. xavfsizlik tanqidlari tufayli (xuddi oldingi versiyalar kabi). Qisqasi, yangilash yaxshi.
  1. Disable XML-RPC Pingback plaginini o'rnating.

WordPress-da XML-RPC-ni o'chirish

Ilgari, menga XML-RPC-ni yoqish/o'chirish opsiyasi tizim sozlamalarida biror joyda bo'lgandek tuyuldi, ammo hozir men uni u erda topa olmayapman. Shuning uchun, undan qutulishning eng oson yo'li tegishli plaginni ishlatishdir.

O'chirish XML-RPC Pingback-ni toping va yuklab oling yoki uni to'g'ridan-to'g'ri tizim boshqaruv panelidan o'rnating. Qo'shimcha hech narsa sozlashingiz shart emas, modul darhol ishlay boshlaydi. U pingback.ping va pingback.extensions.getPingbacks usullarini XML-RPC interfeysidan olib tashlaydi. Bundan tashqari, u HTTP sarlavhalaridan X-Pingback-ni olib tashlaydi.

Bloglardan birida men XML-RPC-ni o'chirishni o'chirish uchun yana bir nechta variantni topdim.

1. Shablonda XML-RPC ni o'chiring.

Buning uchun mavzuning functions.php fayliga quyidagi qatorni qo'shing:

Rad etishga buyurtma bering, hammadan rad etishga ruxsat bering

Shaxsan men oxirgi ikki usuldan foydalanmadim, chunki... Men Disable XML-RPC Pingback plaginini uladim - menimcha, bu etarli bo'ladi. Faqat keraksiz o'rnatishlarni yoqtirmaydiganlar uchun men muqobil variantlarni taklif qildim.

Shanba kuni tushdan boshlab, 25 ga yaqin Wordpress saytlari joylashgan serverim jiddiy sekinlashuvni boshdan kechira boshladi. Oldingi hujumlardan ( , ) e'tiborga olinmasdan omon qolishga muvaffaq bo'lganim uchun, nima bo'layotganini darhol tushunmadim.

Men buni tushunganimda, parollar qo'pol ravishda majburlanganligi va XMLRPC-ga ko'plab so'rovlar bo'lganligi ma'lum bo'ldi.

Natijada, darhol bo'lmasa-da, barchasini kesib tashlashga muvaffaq bo'ldik. Buni oldini olish bo'yicha uchta oddiy hiyla.

Bu usullar, ehtimol, hammaga ma'lum, lekin men tavsiflarda topa olmagan bir nechta xatolarga yo'l qo'ydim - ehtimol bu kimningdir vaqtini tejaydi.

1. Qidiruvni to'xtating, Limit Login Attempts plaginini o'rnating - uni o'rnating, chunki boshqa himoyalar serverni sezilarli darajada sekinlashtiradi, masalan, Login Security Solution plaginidan foydalanganda server yarim soatdan keyin o'lib qoldi, plagin ma'lumotlar bazasini og'ir yuklaydi .

Sozlamalarda "Proksi uchun" katagiga belgi qo'yganingizga ishonch hosil qiling - aks holda u sizning serveringiz IP-ni hamma uchun aniqlaydi va avtomatik ravishda hammani bloklaydi.
YANGILASH, rahmat, tafsilotlar quyida izohlarda keltirilgan - “To'g'ridan-to'g'ri ulanish” yoqilganda, ta'rif ishlamasagina “Proksi uchun” katagiga belgi qo'ying.

2. XML-RPC-ni o'chirib qo'yish - XML-RPC plaginini o'chirish (faollashtirish oson va hammasi).

3. Wp-login.php ni yoping - agar siz IP orqali saytga kirsangiz, plagin ishlamaydi va tanlovchilar saytni buzishda davom etadilar. Buning oldini olish uchun .htaccess ga qo'shing:

Rad etishga buyurtma bering, hammadan rad etishga ruxsat bering

Biz wp-login faylini nusxalaymiz, uni har qanday g'alati nomga o'zgartiramiz, masalan, poletnormalny.php va fayl ichida barcha wp-login.php yozuvlarini poletnormalny.php ga o'zgartirish uchun avtomatik tuzatishdan foydalaning.
Hammasi shu, endi administrator paneliga faqat faylingiz orqali kirishingiz mumkin.

Ushbu 3 oddiy qadamdan so'ng saytlar yana ucha boshladi va tinchlik keldi.

Xo'sh, birdan qiziq

Variantlardan biri sizga hujum qilinayotganini ko'rishdir. Buni nginx jurnallarida ko'rish mumkin (masalan, Debian /var/log/nginx access.log faylining yo'li bu erda).

WordPress har doim saytingizga masofadan kirish uchun o'rnatilgan vositaga ega bo'lgan. Haqiqatan ham, ba'zan saytingizga kirishingiz kerak, lekin kompyuteringiz sizdan uzoqda. Uzoq vaqt davomida yechim xmlrpc.php deb nomlangan fayl edi. Biroq, so'nggi yillarda bu fayl yechimdan ko'ra ko'proq muammoga aylandi.

Quyida xmlrpc.php ni va u nima uchun yaratilganini batafsil ko'rib chiqamiz. Bundan tashqari, u sabab bo'lishi mumkin bo'lgan umumiy xavfsizlik muammolarini va ularni WordPress saytingiz uchun qanday tuzatishni ko'rib chiqamiz.

XML-RPC - bu ma'lumotlarni uzatish imkonini beruvchi WordPress xususiyati bo'lib, HTTP transport va XML kodlash uchun xizmat qiladi. WordPress yopiq tizim emasligi va ko'pincha boshqa tizimlar bilan aloqa o'rnatganligi sababli, bu muammoning echimlari topildi.

Misol uchun, siz mobil telefoningizdan o'z veb-saytingizga xabar yozmoqchisiz deylik. Siz xmlrpc.php tomonidan taqdim etilgan masofaviy ruxsatdan foydalanishingiz kerak.

Xmlrpc.php ning asosiy funksionalligi – smartfondan saytga ulanish, boshqa saytlardan trekbeklar va bog‘lanishlarni amalga oshirish hamda Jetpack plaginiga tegishli ba’zi funksiyalar.

Xmlrpc.php nima uchun yaratilgan va u qanday ishlatilgan?

XML-RPC ning amalga oshirilishi WordPressning dastlabki kunlariga va hatto WordPress WordPress bo'lgunga qadar davom etadi.

Internetning dastlabki kunlarida ulanishlar juda sekin edi va Internetda yozib olish va nashr qilish jarayoni ancha qiyinroq va vaqt talab qilardi. Brauzer orqali to'g'ridan-to'g'ri o'zgartirishlar kiritish o'rniga, ko'pchilik ularni oflayn holga keltirdi, keyin esa o'z tarkibini onlayn tarzda nusxalashdi va joylashtirishdi. Va bu jarayon idealdan uzoq edi.

Yechim (o'sha paytda) o'z tarkibingizni yaratishingiz, keyin blogingizga ulanishingiz va uni nashr qilishingiz mumkin bo'lgan oflayn bloglash mijozini yaratish edi. Ushbu ulanish XML-RPC orqali amalga oshirildi. Asosiy XML-RPC funksiyasi bilan ushbu ulanishlardan foydalangan dastlabki ilovalar odamlarga o'zlarining WordPress saytlariga boshqa qurilmalardan kirish imkoniyatini berdi.

XML-RPC bugun

2008 yilda WordPress-ning 2.6-versiyasi bilan XML-RPC-ni yoqish yoki o'chirish imkoniyati taqdim etildi. Biroq, WordPress iPhone ilovasining chiqarilishi bilan XML-RPC qo'llab-quvvatlashi sukut bo'yicha yoqilgan va uni o'chirish imkoniyati yo'q edi. Bugun ham shundayligicha qolmoqda.

Albatta, ushbu fayl tomonidan taqdim etilgan funksionallik vaqt o'tishi bilan sezilarli darajada kamaydi va fayl hajmi 83 kb dan 3 kb gacha kamaydi, endi u avvalgidek rol o'ynamaydi.

XML-RPC xususiyatlari

Yangi WordPress amaliy dasturlash interfeysi (API) bilan biz XML-RPC butunlay o'chirilishini kutishimiz mumkin. Bugungi kunda ushbu yangi API hali ham sinovdan o'tkazilmoqda va uni faqat maxsus plagin orqali yoqish mumkin.

Kelajakda API to'g'ridan-to'g'ri WordPress yadrosiga kiritilishini kutishingiz mumkin, bu esa xmlrpc.php ga ehtiyojni butunlay yo'q qiladi.

Yangi API mukammal emas, lekin u xmlrpc.php dan farqli o'laroq, yaxshi, ishonchli xavfsizlikni ta'minlaydi.

Nima uchun Xmlrpc.php-ni o'chirib qo'ying

XML-RPC bilan bog'liq eng katta muammo bu xavfsizlikdir. Muammo to'g'ridan-to'g'ri XML-RPC bilan bog'liq emas, lekin u saytingizga hujumni yoqish uchun ishlatilishi mumkin.

Albatta, siz o'zingizni juda kuchli parol va WordPress xavfsizlik plaginlari bilan himoya qilishingiz mumkin. Lekin eng yaxshi himoya rejimi uni oddiygina o'chirishdir.

XML-RPC ning o'tmishda ishlatilgan ikkita asosiy zaif tomonlari mavjud.

Birinchisi, saytingizga kirish uchun qo'pol kuch hujumlaridan foydalanadi. Buzg'unchi foydalanuvchi nomlari va parollarning turli kombinatsiyalarini sinab ko'rish orqali xmlrpc.php yordamida saytingizga kirishga harakat qiladi. Ular yuzlab turli xil parollarni sinab ko'rish uchun bitta buyruqdan samarali foydalanishlari mumkin. Bu ularga odatda qo'pol kuch hujumlarini aniqlaydigan va bloklaydigan xavfsizlik vositalarini chetlab o'tishga imkon beradi.

Ikkinchisi, DDoS hujumi orqali saytni oflayn rejimga o'tkazish. Xakerlar WordPress-dagi teskari bildirishnomani bir vaqtning o'zida minglab saytlarga yuborish uchun foydalanadilar. Ushbu xmlrpc.php funksiyasi xakerlarga DDoS hujumini tarqatish uchun deyarli cheksiz sonli IP manzillarini beradi.

XML-RPC saytingizda ishlayotganligini tekshirish uchun uni XML-RPC Validator deb nomlangan vosita yordamida ishga tushirishingiz mumkin. Saytingizni ushbu vosita bilan ishga tushiring va agar siz xatoga yo'l qo'ysangiz, bu sizda XML-RPC qo'llab-quvvatlanmasligini anglatadi.

Muvaffaqiyatli xabarni olsangiz, quyidagi ikkita yondashuvdan biri yordamida xmlrpc.php ni to'xtatishingiz mumkin.

1-usul: plagin yordamida Xmlrpc.php ni o'chiring

WordPress saytingizda XML-RPC-ni o'chirib qo'yish juda oson.

Bo'limga o'ting Plaginlar › Yangisini qo'shish WordPress administrator konsolida. Plagin toping XML-RPC-ni o'chirib qo'ying va uni o'rnating, u quyidagi rasmga o'xshaydi:

Plaginni faollashtiring va ish tugadi. Ushbu plagin avtomatik ravishda XML-RPC-ni o'chirish uchun kerakli kodni kiritadi.

Biroq, o'rnatilgan plaginlar XML-RPC qismlaridan foydalanishi mumkinligini unutmang, keyin uni o'chirib qo'yish plaginlar yoki ularning alohida qismlari o'rtasida ziddiyatga olib kelishi va ularni ish rejimidan olib tashlashi mumkin.

Agar siz faqat alohida XML-RPC elementlarini o‘chirib qo‘ymoqchi bo‘lsangiz, lekin boshqa plaginlar va funksiyalarning ishlashiga ruxsat bersangiz, quyidagi plaginlarga qarang:

  • XML-RPC hujumini to'xtating. Ushbu plagin barcha XML-RPC hujumlarini to'xtatadi, lekin u Jetpack va boshqa avtomatlashtirilgan vositalar va plaginlar kabi plaginlarga xmlrpc.php fayllariga kirish huquqini berib ishlashni davom ettirish imkonini beradi.
  • XML-RPC nashrini boshqarish. Bu sizga nazoratni saqlab turish va masofadan turib nashr qilish imkonini beradi.

2-usul: Xmlrpc.php-ni qo'lda o'chirib qo'ying

Agar siz plagindan foydalanishni istamasangiz va uni qo'lda qilishni afzal ko'rsangiz, ushbu yondashuvga amal qiling. U barcha kiruvchi xmlrpc.php so'rovlarini WordPress-ga o'tkazishdan oldin to'xtatadi.

.htaccess faylini oching. Ushbu faylni topish uchun fayl menejerida yoki FTP mijozida "yashirin fayllarni ko'rsatish" ni yoqishingiz kerak bo'lishi mumkin.

Ushbu kodni faylga joylashtiring .htaccess:

# WordPress xmlrpc.php so'rovlarini bloklash Buyurtmani rad etish, 123.123.123.123 dan hammadan rad etishga ruxsat berish

Yakuniy fikrlar

Umuman olganda, XML-RPC sizning WordPress saytingizda masofaviy nashr qilish bilan bog'liq ba'zi muammolarga ishonchli yechim bo'ldi. Biroq, shu bilan birga, ba'zi WordPress veb-saytlari egalari uchun juda xavfli bo'lgan ba'zi xavfsizlik teshiklari paydo bo'ldi.

Saytingiz xavfsizligini ta'minlash uchun, agar sizga masofaviy nashr qilish va Jetpack plagini uchun zarur bo'lgan ba'zi xususiyatlar kerak bo'lmasa, xmlrpc.php ni butunlay o'chirib qo'yish tavsiya etiladi. Keyin xavfsizlik teshiklarini tuzatish paytida ushbu xususiyatlardan foydalanishga imkon beruvchi vaqtinchalik plaginlardan foydalanishingiz mumkin.

Vaqt o'tishi bilan biz XML-RPC funksiyasi xavfsizlikni yo'qotmasdan masofadan kirishni qo'llab-quvvatlaydigan yangi WordPress API-ga integratsiya qilinishini kutishimiz mumkin.

XML-RPC ga plagin orqali yoki qo'lda kirishni blokladingizmi? Yoki u ilgari faol bo'lganligi sababli xavfsizlik bilan bog'liq muammolar bormi? Quyidagi izohlarda tajribangizni baham ko'ring.