Úvod do XML-RPC. Súťaže v programovaní Čo je viditeľné v protokoloch servera


Jeho príspevok tiež ukazuje, ako vykonať autentifikáciu prehliadača, ako je uvedené nižšie:
$request = xmlrpc_encode_request ("methodName" , array("methodParam" ));
$auth = base64_encode ($username . ":" . $heslo );
$header = (version_compare(phpversion(), "5.2.8"))
? array("Content-Type: text/xml" , "Autorizácia: Basic $auth " )
: "Typ obsahu: text/xml\r\nAutorizácia: Základné$auth " ; //
$context = stream_context_create (pole("http" => pole(
"method" => "POST" ,
"header" => $header ,
"obsah" => $požiadavka
)));
$webservice = "http://www.example.com/rpc";
$file = file_get_contents($webservice, false, $kontext);
$response = xmlrpc_decode ($file);
if (xmlrpc_is_fault($response)) (
return "xmlrpc: $response [ faultString ] ($response [ faultCode ] )" ;
) inak (
return $response ;
}
?>
1 – POZNÁMKA REDAKTORA: TOTO JE OPRAVA OD „SandersWang dt php at gmail dot com“

pred 16 rokmi

Binárne reťazce (nastavené pomocou xmlrpc_set_type) idú do a ...blok, ako by ste očakávali. Ale po každom 80. znaku táto funkcia vloží entitu XML „ “, čo je nový riadok Unicode, akoby spôsobila zalamovanie riadkov, čo je nepochybne hlúpe.

Hoci to môže byť hlúpe, spôsobuje to skutočné problémy niektorým serverom XML-RPC, ako napríklad http://jakarta.apache.org/xmlrpc/ (rodená Helma). Odstránenie týchto entít niečím podobným

$req = preg_replace("/ /", "", xmlrpc_encode_request("moja.metod", $args));

funguje okolo problému.

pred 11 rokmi

Treba poznamenať, že kódovanie zrejme nič nekóduje, iba špecifikuje, čo ide do hlavičky XML.

Pri použití tejto funkcie sme mali problémy s dvojito zakódovanými reťazcami UTF ukladanými do databázy, odosielaním do servletu apache xml-rpc a ukladaním do databázy mysql. Vyriešilo sa to nastavením "escaping" na "markup" a "encoding" na "UTF-8" (nezabudnite nastaviť "utf-8" aj v xmlrpc_decode).

Zdá sa, že reťazce zakódované v UTF-8 uniknú so svojimi bajtmi ako entitami namiesto ich znakov ako entít.

pred 9 rokmi

Skúšali ste niekedy prenášať pole, ako je nasledujúce, pomocou xmlrpc?
$var1=pole(7=>14,9=>18);

Výstupné pole vyzerá úplne inak! Bude to vyzerať takto:
$var2=pole(14,18);

Jediné riešenie, ktoré som našiel, je pridať pred index medzeru:
$var3=pole(" 7"=>14," 9"=>18);

Pomocou tejto metódy získate správny výsledok. ($var1)

pred 16 rokmi

Túto funkciu by mal používať klient XML-RPC na vytvorenie dátovej časti XML pre požiadavku XML-RPC;

$params = "system.methodSignature" ;
$method = "system.methodHelp" ;
$požiadavka = xmlrpc_encode_request ($metóda, $params);
echo ($požiadavka);
?>

Produkuje;



systém.metódaPomoc

systém.metódaPodpis



Druhý argument rozpoznáva typ premennej a generuje správnu štruktúru XML-RPC. Ďalšie podrobnosti nájdete v xmlrpc_encode().

pred 12 rokmi

Jednoduchý OO klient s funkciou Overload:

metóda php test_helloworld je preložená do metódy xmlrpc test.helloworld.

class RpcClient(

súkromné ​​$_methods;
súkromný $_kontext;
súkromná $_url;

Funkcia __construct ($url, $user, $passwd) (
$auth = base64_encode(sprintf("%s:%s", $user,$passwd));
$this->_context = stream_context_create(pole(
"http" => pole(
"method" => "POST",
"header" => "Typ obsahu: text/xml\r\n".
"Autorizácia: Basic $auth" ,

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

$this->registerMethod("Test_HelloWorld");

Funkcia __call($methodName, $params) (
if (array_key_exists($methodName,$this->_methods)) (
// na appelle la fonction RPC
$m = str_replace("_", ".", $methodName);
$r = xmlrpc_encode_request($m, $params,array("verbosity"=>"newlines_only"));
$c = $toto->_kontext;
stream_context_set_option($c,"http","content",$r);
$f = file_get_contents($this->_url,false,$c);
$resp = xmlrpc_decode($f);
návrat $resp;
) inak (
// na appelle la fonction de l"objet
call_user_method_array($metodaNazov, $toto,$paramy);
}
}

Metóda registra súkromnej funkcie (metóda $) (
$this->_methods[$method] = true;
}

Úvod do XML-RPC

Na internete je množstvo rôznych zdrojov, ktoré používateľom poskytujú určité informácie. Nemyslí sa tým obyčajné statické stránky, ale napríklad dáta získané z databázy alebo archívov. Môže to byť archív finančných údajov (výmenné kurzy, údaje o kurzoch cenných papierov), údaje o počasí alebo rozsiahlejšie informácie – novinky, články, správy z fór. Takéto informácie môžu byť návštevníkovi stránky prezentované napríklad prostredníctvom formulára, ako odpoveď na požiadavku, alebo môžu byť zakaždým generované dynamicky. Problém je však v tom, že takéto informácie často nepotrebuje ani tak koncový používateľ – osoba, ale iné systémy a programy, ktoré tieto údaje použijú na svoje výpočty alebo iné potreby.

Skutočný príklad: stránka bankového webu, na ktorej sa zobrazujú menové kurzy. Ak pristupujete na stránku ako bežný používateľ, prostredníctvom prehliadača vidíte celý dizajn stránky, bannery, menu a ďalšie informácie, ktoré „rámcujú“ skutočný účel vyhľadávania – menové kotácie. Ak potrebujete zadať tieto cenové ponuky do vášho internetového obchodu, nezostáva vám nič iné, len manuálne vybrať potrebné údaje a preniesť ich cez schránku na váš web. A budete to musieť robiť každý deň. Naozaj neexistuje východisko?

Ak problém vyriešite priamočiaro, potom sa okamžite objaví riešenie: program (skript na webe), ktorý potrebuje údaje, dostane stránku zo servera ako „bežný používateľ“, analyzuje (analyzuje) výsledný html kód a extrahuje potrebné informácie z neho. Dá sa to urobiť buď pomocou regulárneho regulárneho výrazu, alebo pomocou akéhokoľvek html analyzátora. Náročnosť prístupu spočíva v jeho neúčinnosti. Po prvé, na príjem malej časti údajov (údaje o menách sú doslova tucet alebo dva znaky) je potrebné prijať celú stránku, ktorá má aspoň niekoľko desiatok kilobajtov. Po druhé, pri akejkoľvek zmene v kóde stránky, napríklad v dizajne alebo niečom inom, bude potrebné prepracovať náš algoritmus analýzy. A to bude vyžadovať značné množstvo zdrojov.

Preto vývojári dospeli k rozhodnutiu - je potrebné vyvinúť nejaký univerzálny mechanizmus, ktorý by umožnil transparentnú (na úrovni protokolu a prenosového média) a jednoduchú výmenu dát medzi programami, ktoré môžu byť umiestnené kdekoľvek, byť napísané v akomkoľvek jazyku. a bežať pod akýmkoľvek operačným systémom a na akejkoľvek hardvérovej platforme. Takýto mechanizmus sa teraz nazýva hlasnými výrazmi „webové služby“, „SOAP“, „architektúra orientovaná na služby“. Na výmenu dát sa používajú otvorené a časom overené štandardy – na prenos správ sa používa protokol HTTP (hoci možno použiť aj iné protokoly – napríklad SMTP). Samotné dáta (v našom príklade výmenné kurzy) sa prenášajú zabalené v multiplatformovom formáte – vo forme XML dokumentov. Na tento účel bol vynájdený špeciálny štandard – SOAP.

Áno, teraz sú webové služby, SOAP a XML na perách každého, začínajú sa aktívne implementovať a veľké korporácie ako IBM a Microsoft uvoľňujú nové produkty určené na pomoc pri celkovej implementácii webových služieb.

Ale! Pre náš príklad s výmennými kurzami, ktoré sa musia prenášať z webovej stránky banky do motora internetového obchodu, bude takéto riešenie veľmi ťažké. Koniec koncov, samotný popis štandardu SOAP zaberá obscénnych jeden a pol tisíc strán, a to nie je všetko. Pre praktické využitie sa tiež budete musieť naučiť pracovať s knižnicami a rozšíreniami tretích strán (až od PHP 5.0 obsahuje knižnicu pre prácu so SOAP) a písať stovky a tisíce riadkov vlastného kódu. A to všetko na získanie niekoľkých písmen a číslic je zjavne veľmi ťažkopádne a iracionálne.

Preto existuje ďalší, dalo by sa povedať, alternatívny štandard výmeny informácií – XML-RPC. Bol vyvinutý za účasti spoločnosti Microsoft spoločnosťou UserLand Software Inc a je určený na jednotný prenos dát medzi aplikáciami cez internet. Môže nahradiť SOAP pri budovaní jednoduchých služieb, kde nie sú potrebné všetky „podnikové“ schopnosti skutočných webových služieb.

Čo znamená skratka XML-RPC? RPC je skratka pre Remote Procedure Call. To znamená, že aplikácia (či už skript na serveri alebo bežná aplikácia na klientskom počítači) môže transparentne používať metódu, ktorá je fyzicky implementovaná a spustená na inom počítači. XML sa tu používa na poskytnutie univerzálneho formátu na popis prenášaných údajov. Ako prenos sa na prenos správ používa protokol HTTP, ktorý vám umožňuje bezproblémovú výmenu údajov prostredníctvom akýchkoľvek sieťových zariadení - smerovačov, firewallov, proxy serverov.

Na použitie teda potrebujete: server XML-RPC, ktorý poskytuje jednu alebo viac metód, klienta XML-RPC, ktorý dokáže vygenerovať správnu požiadavku a spracovať odpoveď servera a tiež poznať parametre servera potrebné pre úspešnú prevádzku - adresa, názov metódy a odovzdané parametre.

Všetka práca s XML-RPC prebieha v režime „request-response“, čo je jeden z rozdielov medzi technológiou a štandardom SOAP, kde existujú koncepty transakcií a možnosť uskutočniť oneskorené hovory (keď server uloží žiadosť a odpovie na ňu v určitom čase v budúcnosti). Tieto doplnkové funkcie sú užitočnejšie pre výkonné podnikové služby, výrazne komplikujú vývoj a podporu serverov a kladú dodatočné požiadavky na vývojárov klientskych riešení.

Postup pri práci s XML-RPC začína vytvorením požiadavky. Typická požiadavka vyzerá takto:

POST /RPC2 HTTP/1.0
User-Agent: eshop-test/1.1.1 (FreeBSD)
Hostiteľ: server.localnet.com
Content-Typ: text/xml
Dĺžka obsahu: 172



Testovacia metóda
Dobrý deň, XML-RPC!


Prvé riadky tvoria štandardnú hlavičku HTTP POST požiadavky. Medzi povinné parametre patrí hostiteľ, typ údajov (typ MIME), ktorý musí byť text/xml, a dĺžka správy. Norma tiež určuje, že pole User-Agent musí byť vyplnené, ale môže obsahovať ľubovoľnú hodnotu.

Ďalej nasleduje obvyklá hlavička XML dokumentu. Koreňový prvok požiadavky je , môže byť len jeden a nemôže obsahovať také uzly ako deti. To znamená, že jedna požiadavka môže volať iba jednu metódu na serveri.

Linka Testovacia metóda označuje, že voláme metódu s názvom TestMetod. V prípade potreby tu môžete zadať názov programu alebo modulu obsahujúceho metódu, ako aj cestu k nej. Špecifikácia XML-RPC, hoci ukladá určité obmedzenia na množinu znakov, ktoré možno použiť na označenie metódy, spôsob ich interpretácie úplne závisí od implementácie servera.

Ďalej sa nastavia prenášané parametre. Na to slúži táto sekcia. Ktorý môže obsahovať ľubovoľný počet čiastkových prvkov Ktoré obsahujú parameter opísaný tagom . Na parametre a dátové typy sa pozrieme trochu ďalej. V našej verzii sa metóde odovzdáva jeden parameter reťazca uzavretý v značke .

Za popisom všetkých parametrov nasledujú uzatváracie značky. Požiadavka a odpoveď v XML-RPC sú bežné dokumenty XML, takže všetky značky musia byť zatvorené. V XML-RPC však neexistujú žiadne jednotlivé značky, hoci sú prítomné v štandarde XML.

Teraz sa pozrime na odpoveď servera. Hlavička odpovede HTTP je normálna, ak je požiadavka úspešne spracovaná, server vráti odpoveď HTTP/1.1 200 OK. Rovnako ako v požiadavke musíte správne zadať typ MIME, dĺžku správy a dátum generovania odpovede.

Samotné telo odpovede je nasledovné:



pravda


Teraz namiesto koreňovej značky je označená značka , ktorý bezprostredne obsahuje výsledky spracovania žiadosti. Žiaľ, odpoveď neprejde názvom metódy, takže by ste ju mali uložiť na strane klienta, aby ste sa vyhli nejasnostiam, ak sú súčasne volané rôzne metódy.

Ak sa pri spracovaní vašej požiadavky vyskytla chyba, namiesto Odpoveď bude obsahovať prvok , v ktorom bude vnorená štruktúra popisujúca chybu. Popis chyby obsahuje číselný kód chyby a textový popis.

Teraz sa stručne pozrime na dátové typy v XML-RPC. Celkovo existuje 9 dátových typov – sedem jednoduchých typov a 2 komplexné. Každý typ je opísaný vlastnou značkou alebo sadou značiek (pre zložité typy).

Jednoduché typy:

Celé čísla- štítok alebo ;

Booleovský typ- štítok , môže nadobúdať hodnoty 0/1 aj true/false;

ASCII reťazec- popísané tagom a môže obsahovať ľubovoľný reťazec znakov;

Čísla s pohyblivou rádovou čiarkou- štítok , môže obsahovať aj znak čísla, zlomková časť je oddelená bodkou;

dátum a čas- popísané tagom a musí byť v súlade s formátom iso8601. Pre ďalšie spracovanie v skriptoch je tento formát trochu nepohodlný, preto sa vždy pri odosielaní/prijímaní požiadavky konvertuje. Dá sa to urobiť špeciálnou funkciou v rámci knižnice, alebo ak žiadna neexistuje, vývojár musí dátum previesť manuálne.

Posledným jednoduchým typom je kódovaný reťazec base64, ktorý je popísaný značkou . Tento typ je univerzálny, dá sa s ním prenášať ľubovoľné dáta medzi klientom a serverom, aj keď objem prenesených dát vďaka takémuto kódovaniu narastá. Ale to je dôsledok textovej povahy protokolu a najmä formátu XML.

Komplexné typy sú reprezentované štruktúrami a poliami. Štruktúra je určená koreňovým prvkom , ktorý môže obsahovať ľubovoľný počet prvkov , ktorá definuje každý člen štruktúry. Člen štruktúry je opísaný dvoma značkami: po prvé, , popisuje meno člena, za druhé, , obsahuje hodnotu člena (spolu s tagom popisujúcim typ údajov).

Polia nemajú názvy a sú popísané tagom ktorý obsahuje jeden prvok a jeden alebo viac podriadených prvkov , kde sú uvedené konkrétne údaje. Pole môže obsahovať akékoľvek iné typy v ľubovoľnom poradí, ako aj iné polia, čo vám umožňuje opísať viacrozmerné polia. Môžete tiež opísať rad štruktúr. Skutočnosť, že pole nemá názov, však v niektorých prípadoch komplikuje jeho použitie, na prenos zložitých dát je potrebné ich opakovane zbaliť do iných typov (napríklad na prenos viacerých polí môžete každé pole zbaliť samostatne do štruktúry a potom z týchto štruktúr vytvorte jedno pole).

Samozrejme, niekto povie, že takýto zoznam typov údajov je veľmi slabý a „nedovoľuje vám expandovať“. Áno, ak potrebujete preniesť zložité objekty alebo veľké množstvo dát, potom je lepšie použiť SOAP. A pre malé, nenáročné aplikácie je XML-RPC celkom vhodné, navyše sa často aj jeho schopnosti ukážu ako priveľa! Vzhľadom na jednoduchosť nasadenia, veľký počet knižníc pre takmer akýkoľvek jazyk a platformu a širokú podporu v PHP, XML-RPC často jednoducho nemá konkurenciu. Nedá sa síce hneď odporučiť ako univerzálne riešenie – v každom konkrétnom prípade sa treba rozhodnúť podľa okolností.

Technológia XML-RPC sa v systéme WordPress používa na rôzne pekné funkcie ako sú pingbacky, trackbacky, vzdialená správa stránok bez prihlasovania sa do admin panela atď. Bohužiaľ, útočníci ho môžu použiť na vykonávanie DDoS útokov na webové stránky. To znamená, že vytvárate krásne, zaujímavé WP projekty pre seba alebo na objednávku a zároveň, bez toho, aby ste čokoľvek tušili, môžete byť súčasťou DDoS botnetu. Spojením desiatok a stoviek tisíc stránok dohromady zlí ľudia vytvárajú silný útok na svoju obeť. Aj keď zároveň trpí aj vaša stránka, pretože... záťaž ide na hosting, kde sa nachádza.

Dôkaz o takejto zlej aktivite môže byť v protokoloch servera (access.log v nginx), ktoré obsahujú nasledujúce riadky:

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

Vráťme sa však k zraniteľnosti XML-RPC. Vizuálne sa to prejavuje pomalým otváraním stránok na vašom serveri alebo ich nemožnosťou načítať vôbec (chyba 502 Bad Gateway). Technická podpora môjho hostiteľa FASTVPS potvrdila moje odhady a odporučila:

  1. Aktualizujte WordPress na najnovšiu verziu spolu s doplnkami. Vo všeobecnosti, ak budete postupovať, možno ste čítali o potrebe inštalácie najnovšej verzie 4.2.3. kvôli bezpečnostnej kritike (rovnako ako predchádzajúce verzie). Skrátka je dobré aktualizovať.
  1. Nainštalujte doplnok Disable XML-RPC Pingback.

Zakázanie XML-RPC vo WordPress

Predtým sa mi zdalo, že možnosť zapnúť/vypnúť XML-RPC bola niekde v systémových nastaveniach, ale teraz ju tam neviem nájsť. Preto najjednoduchší spôsob, ako sa ho zbaviť, je použiť príslušný plugin.

Nájdite a stiahnite si možnosť Zakázať spätnú väzbu XML-RPC alebo ju nainštalujte priamo z panela správcu systému. Nemusíte nič dodatočne konfigurovať, modul začne fungovať okamžite. Odstraňuje metódy pingback.ping a pingback.extensions.getPingbacks z rozhrania XML-RPC. Okrem toho odstraňuje X-Pingback z hlavičiek HTTP.

V jednom z blogov som našiel niekoľko ďalších možností na odstránenie vypnutia XML-RPC.

1. Zakážte XML-RPC v šablóne.

Ak to chcete urobiť, pridajte nasledujúci riadok do súboru functions.php témy:

Objednať odmietnutie, povoliť odmietnutie od všetkých

Ja osobne som posledné dva spôsoby nepoužil, pretože... Pripojil som plugin Disable XML-RPC Pingback - myslím, že to bude stačiť. Len pre tých, ktorí nemajú radi zbytočné inštalácie, som navrhol alternatívne možnosti.

Od sobotňajšieho poludnia sa môj server, na ktorom je hosťovaných asi 25 stránok Wordpress, začal výrazne spomaľovať. Keďže sa mi podarilo prežiť predchádzajúce útoky ( , ) bez povšimnutia, hneď som nechápal, čo sa deje.

Keď som na to prišiel, ukázalo sa, že heslá boli hrubo vynútené + veľa požiadaviek na XMLRPC.

Výsledkom bolo, že sa nám to všetko podarilo odstrihnúť, aj keď nie hneď. Tu sú tri jednoduché triky, ako sa tomu vyhnúť.

Tieto techniky sú s najväčšou pravdepodobnosťou známe každému, ale vystúpil som na niekoľko chýb, ktoré som v popisoch nenašiel - možno to niekomu ušetrí čas.

1. Zastavte vyhľadávanie, nainštalujte doplnok Limit Login Attempts - nainštalujte ho, pretože iné ochrany server značne spomaľujú, napríklad pri použití doplnku Login Security Solution server po pol hodine zomrel, doplnok silne zaťažuje databázu .

V nastaveniach nezabudnite začiarknuť políčko „Pre proxy“ - inak určí IP vášho servera pre všetkých a automaticky všetkých zablokuje.
AKTUALIZÁCIA, ďakujem, podrobnosti sú uvedené nižšie v komentároch - začiarknite políčko „Pre proxy“ iba v prípade, že definícia nefunguje, keď je povolené „Priame pripojenie“

2. Zakázať XML-RPC – doplnok Zakázať XML-RPC (je ľahké ho aktivovať a je to).

3. Zatvorte wp-login.php - ak pristupujete na stránku cez IP, plugin nefunguje a výbery naďalej padajú stránky. Aby ste tomu zabránili, pridajte do .htaccess:

Objednať odmietnutie, povoliť odmietnutie od všetkých

Skopírujeme súbor wp-login, premenujeme ho na akékoľvek zvláštne meno, napríklad poletnormalny.php, a vo vnútri súboru pomocou autocorrect zmeníme všetky nápisy wp-login.php na poletnormalny.php.
To je všetko, teraz máte prístup k správcovskému panelu iba pomocou svojho súboru.

Po týchto 3 jednoduchých krokoch začali lokality opäť lietať a nastal pokoj.

No zrazu je to zaujímavé

Jednou z možností je zistiť, či na vás neútočia. Môžete to vidieť v protokoloch nginx (napríklad tu je cesta k súboru Debian /var/log/nginx access.log).

WordPress mal vždy vstavaný nástroj na vzdialený prístup k vašej stránke. Niekedy sa skutočne potrebujete dostať na svoju stránku, ale váš počítač je ďaleko od vás. Riešením bol dlho súbor s názvom xmlrpc.php. V posledných rokoch sa však tento súbor stal skôr problémom ako riešením.

Nižšie sa bližšie pozrieme na xmlrpc.php a prečo vznikol. Pozrieme sa tiež na bežné bezpečnostné problémy, ktoré môže spôsobiť, a ako ich opraviť na vašom webe WordPress.

XML-RPC je funkcia WordPress, ktorá umožňuje prenos údajov, pričom HTTP slúži ako prenos a XML na kódovanie. Keďže WordPress nie je uzavretý systém a často komunikuje s inými systémami, našli sa riešenia tohto problému.

Povedzme napríklad, že chcete na svoj web uverejňovať príspevky zo svojho mobilného telefónu. Musíte použiť vzdialený prístup, ktorý poskytuje xmlrpc.php.

Hlavnou funkcionalitou xmlrpc.php je možnosť pripojiť sa na stránku zo smartfónu, implementácia spätných odkazov a spätných odkazov z iných stránok a niektoré funkcie súvisiace s doplnkom Jetpack.

Prečo bol vytvorený Xmlrpc.php a ako bol použitý?

Implementácia XML-RPC siaha až do začiatkov WordPress a ešte predtým, ako sa WordPress stal WordPress.

V začiatkoch internetu boli pripojenia veľmi pomalé a proces nahrávania a publikovania na webe bol oveľa náročnejší a časovo náročnejší. Namiesto vykonávania zmien priamo cez prehliadač ich väčšina urobila offline a potom skopírovala a prilepila svoj obsah online. A tento proces mal ďaleko od ideálu.

Riešením (vtedy) bolo vytvorenie offline blogovacieho klienta, kde by ste si mohli zostaviť svoj obsah, potom sa pripojiť k svojmu blogu a publikovať ho. Toto spojenie bolo uskutočnené cez XML-RPC. Vďaka základnej funkcionalite XML-RPC umožnili prvé aplikácie využívajúce tieto pripojenia ľuďom prístup k svojim webom WordPress z iných zariadení.

XML-RPC dnes

V roku 2008 bola s verziou 2.6 WordPress predstavená možnosť povoliť alebo zakázať XML-RPC. S vydaním aplikácie WordPress pre iPhone však bola podpora XML-RPC predvolene povolená a neexistovala možnosť ju zakázať. Ostáva to tak aj dnes.

Samozrejme, funkcionalita poskytovaná týmto súborom sa časom výrazne znížila a veľkosť súboru sa znížila z 83kb na 3kb, už to nehrá takú rolu ako predtým.

Vlastnosti XML-RPC

S novým aplikačným programovacím rozhraním WordPress (API) môžeme očakávať úplné vypnutie XML-RPC. Dnes je toto nové API stále v testovaní a dá sa aktivovať len cez špeciálny plugin.

Aj keď môžete očakávať, že API bude v budúcnosti zahrnuté priamo do jadra WordPress, čím sa úplne eliminuje potreba xmlrpc.php.

Nové API nie je dokonalé, ale na rozdiel od xmlrpc.php poskytuje dobré a spoľahlivé zabezpečenie.

Prečo zakázať Xmlrpc.php

Najväčším problémom XML-RPC je bezpečnosť. Problém priamo nesúvisí s XML-RPC, ale dá sa použiť na umožnenie útoku na vašu stránku.

Samozrejme sa môžete chrániť veľmi silným heslom a bezpečnostnými doplnkami WordPress. Ale najlepším ochranným režimom je jednoducho ho vypnúť.

Existujú dve hlavné slabé stránky XML-RPC, ktoré boli v minulosti využívané.

Prvý využíva útoky hrubou silou na získanie prístupu na vašu stránku. Útočník sa pokúsi získať prístup na vašu stránku pomocou xmlrpc.php skúšaním rôznych kombinácií používateľských mien a hesiel. Môžu efektívne použiť jeden príkaz na testovanie stoviek rôznych hesiel. To im umožňuje obísť bezpečnostné nástroje, ktoré by za normálnych okolností detekovali a blokovali útoky hrubou silou.

Druhým je stiahnutie stránky do režimu offline prostredníctvom DDoS útoku. Hackeri použijú spätnú notifikáciu vo WordPress na jej odoslanie na tisíce stránok súčasne. Táto funkcia xmlrpc.php poskytuje hackerom takmer nekonečný počet IP adries na šírenie DDoS útoku.

Ak chcete skontrolovať, či XML-RPC na vašom webe funguje, môžete ho spustiť pomocou nástroja s názvom XML-RPC Validator. Spustite svoju stránku pomocou nástroja a ak sa vám zobrazí chyba, znamená to, že nemáte podporu XML-RPC.

Ak dostanete správu o úspechu, môžete zastaviť xmlrpc.php jedným z dvoch spôsobov uvedených nižšie.

Metóda 1: Zakážte Xmlrpc.php pomocou pluginu

Zakázanie XML-RPC na vašom webe WordPress je neuveriteľne jednoduché.

Prejdite do sekcie Pluginy › Pridať nové vo vašej správcovskej konzole WordPress. Nájdite doplnok Zakázať XML-RPC a nainštalujte ho, vyzerá to ako na obrázku nižšie:

Aktivujte doplnok a máte hotovo. Tento plugin automaticky vloží potrebný kód na deaktiváciu XML-RPC.

Pamätajte však, že nainštalované pluginy môžu používať časti XML-RPC a ich zakázanie môže spôsobiť konflikt medzi pluginmi alebo ich jednotlivými časťami a vyradiť ich z pracovného režimu.

Ak chcete zakázať iba jednotlivé prvky XML-RPC, ale povoliť fungovanie iných doplnkov a funkcií, pozrite sa na tieto doplnky:

  • Zastavte útok XML-RPC. Tento doplnok zastaví všetky útoky XML-RPC, ale umožní doplnkom ako Jetpack a iným automatizovaným nástrojom a doplnkom pokračovať v prevádzke tým, že im umožní prístup k súborom xmlrpc.php.
  • Ovládajte publikovanie XML-RPC. To vám umožňuje udržiavať kontrolu a publikovať na diaľku.

Metóda 2: Manuálne zakážte Xmlrpc.php

Ak nechcete používať doplnok a radšej to robíte manuálne, postupujte podľa tohto postupu. Zastaví všetky prichádzajúce požiadavky xmlrpc.php skôr, ako budú odoslané do WordPress.

Otvorte súbor .htaccess. Možno budete musieť povoliť „zobraziť skryté súbory“ v správcovi súborov alebo klientovi FTP, aby ste tento súbor našli.

Vložte tento kód do súboru .htaccess:

# Blokujte požiadavky WordPress xmlrpc.php objednávka zamietnuť, povoliť odmietnuť od všetkých povoliť od 123.123.123.123

Záverečné myšlienky

Celkovo bol XML-RPC solídnym riešením niektorých problémov, ktoré prichádzali so vzdialeným publikovaním na vašom webe WordPress. Zároveň sa však objavili niektoré bezpečnostné diery, ktoré sa ukázali byť pre niektorých majiteľov WordPress stránok dosť nebezpečné.

Aby bola vaša stránka bezpečná, odporúča sa úplne zakázať xmlrpc.php, pokiaľ nepotrebujete niektoré z funkcií vyžadovaných vzdialeným publikovaním a zásuvným modulom Jetpack. Potom môžete použiť náhradné doplnky, ktoré vám umožnia používať tieto funkcie pri oprave bezpečnostných dier.

V priebehu času môžeme očakávať, že funkcionalita XML-RPC bude integrovaná do nového WordPress API, ktoré bude podporovať vzdialený prístup bez obetovania bezpečnosti.

Zablokovali ste prístup k XML-RPC cez plugin alebo manuálne? Alebo sa vyskytli nejaké bezpečnostné problémy, pretože bol predtým aktívny? Podeľte sa o svoje skúsenosti v komentároch nižšie.