internet Okná Android
Rozbaľovať

Prečo potrebujete súbor XMLRPC PHP. Programovacie súťaže

Pred niekoľkými dňami som si všimol, že zaťaženie mojich stránok na hostingu rástol občas. Ak je to zvyčajne v regióne 100-120 "papagáje" (CP), potom za posledných niekoľko dní sa zvýšilo na 400-500 cp. V tom nie je nič dobré, pretože hoster môže preložiť do drahšej tarify, a dokonca pokrývajú prístup na stránky vôbec, takže som začal chápať.

Ale ja som si vybral metódu, ktorá vám umožní uložiť funkciu XML-RPC: Inštalácia vypínača XML-RPC Pingback Pingback. Vymaže len "nebezpečné" metódy pingback.ping a pingback.extsions.getpingbacks, takže funkcia XML-RPC. Po inštalácii pluginu je potrebné aktivovať - \u200b\u200bnie je potrebná žiadna ďalšia konfigurácia.

Pozdĺž cesty som zaznamenal všetky IP útočníci, aby file.htaccess Moje stránky, aby im zablokoval prístup. Práve skončil na konci súboru:

Objednajte všetky odmietnutie od 5.196.5.116 37.59.120.214 92.222.35.159

To je všetko, teraz sme bezpečne chránené blog z ďalších útokov pomocou XMLRPC.PHP. Naše stránky prestali zasielať podľa požiadaviek, ako aj útoku s Tretiami stránkami DDOS.

WordPress bol vždy vloženým nástrojom pre vzdialený prístup na vaše stránky. Niekedy sa musíte dostať na svoje stránky a počítač je ďaleko od vás. Po dlhú dobu, roztok bol podaný xmlrpc.php. V posledných rokoch sa však tento súbor stal väčším problémom ako riešenie.

Nižšie sme rozoznal XMLRPC.PHP a prečo bola vytvorená. Budeme tiež zvážiť spoločné bezpečnostné problémy, ktoré môže spôsobiť a ako ich opraviť pre vaše stránky na WordPress.

XML-RPC je funkcia WordPress, ktorá vám umožní prenášať dáta z HTTP vyčnievajúceho ako prepravu a XML - pre kódovanie. Keďže WordPress nie je uzavretý systém a často komunikuje s inými systémami, pre túto úlohu sa našli riešenia.

Povedzme napríklad, že chcete publikovať na svojich stránkach z vášho mobilného telefónu. Musíte použiť vzdialený prístup poskytovaný spoločnosťou XMLRPC.PHP.

Hlavný funkčný XMLRPC.PHP je schopnosť pripojiť sa k stránke z smartfónu, implementáciu trackBakes a spojí z iných stránok a niektoré funkcie spojené s pluginom JetPack.

Prečo bol vytvorený xmlrpc.php a ako to bolo?

Implementácia XML-RPC prejde ďaleko v prvých dňoch WordPress a ešte predtým, ako sa WordPress stal WordPress.

Vrátenie sa na tie dni, kedy sa internet nedávno objavil, spojenia boli veľmi pomalé a proces nahrávania a publikácia na webe bol oveľa ťažší a čas. Namiesto toho, aby sa zmení okamžite cez prehliadač, väčšina ich urobila v the theline a potom kopíruje a vložil ich obsah online. A tento proces bol ďaleko od ideálu.

Riešenie (v tom čase) bolo vytvorenie klienta pre offline blogovanie, kde by ste mohli vytvoriť svoj obsah, potom sa pripojiť k svojmu blogu a publikovať ho. Toto spojenie sa uskutočnilo cez XML-RPC. S hlavnou funkčnosťou XML RPC, včasné aplikácie pomocou podobných pripojení poskytli ľuďom s možnosťou zadať svoje webové stránky WordPress z iných zariadení.

XML RPC dnes

V roku 2008 sa objavila možnosť XML-RPC zapnutia a vypnutia. Avšak, s uvoľňovaním aplikácie WordPress pre iPhone, bola predvolene zapnutá podpora XML-RPC a neexistovala žiadna možnosť vypnutia. Takže zostáva a dnes.

Samozrejme, funkčnosť poskytovaná týmto súborom sa výrazne znížila a veľkosť súboru sa znížila z 83kB na 3kb, už neohrozuje takú úlohu ako predtým.

Vlastnosti XML-RPC

S novým programovým rozhraním aplikácie WordPress (API) môžeme očakávať, že XML-RPC bude úplne zakázané. Dnes je táto nová API stále v skúšobnom štádiu a môže byť zahrnutý len prostredníctvom špeciálneho pluginu.

Aj keď môžete API očakávať priamo v jadre WordPress v budúcnosti, čo úplne eliminuje potrebu používať XMLRPC.PHP.

Nový API nie je dokonalý, ale poskytuje dobrú spoľahlivú ochranu, na rozdiel od XMLRPC.php.

Prečo vypnúť XMLRPC.PHP.

Najväčší problém spojený s XML-RPC je bezpečnosť. Problém nie je priamo spojený s XML-RPC, ale môže sa použiť na zapnutie útoku na vašich stránkach.

Samozrejme, môžete chrániť veľmi spoľahlivé heslo hesla a pluginy WordPress, ktoré zabezpečujú bezpečnosť. Ale najlepší režim ochrany ho jednoducho vypne.

Existujú dva hlavné slabé stránky XML-RPC, ktoré boli v minulosti použité.

Prvý - používa útok priamym výberom hesla (útoky Brute Force) na získanie prístupu na vaše stránky. Útok na útoku sa pokúsite pristupovať k vašej stránke pomocou XMLRPC.PHP Výber rôznych kombinácií užívateľských mien a hesiel. Môžu účinne používať jeden tím na testovanie stoviek rôznych hesiel. To im umožňuje obísť bezpečnostné nástroje, ktoré zvyčajne detekujú a blokujú útoky priameho výberu.

Druhý - preklad stránky do offline podľa útoku DDOS. Hackeri budú používať späť oznámenie v programe WordPress, aby to poslali tisíce lokalít v rovnakom čase. Táto funkcia XMLRPC.PHP dáva hackerom takmer nekonečným množstvom IP adries na distribúciu útoku DDOS.

Ak chcete skontrolovať, či XML-RPC funguje na vašej stránke, môžete ho spustiť pomocou nástroja s názvom XML-RPC Validator. Spustite svoju webovú stránku pomocou nástroja a ak sa zobrazí chybové hlásenie, znamená to, že nemáte podporu XML-RPC.

Ak dostanete úspešnú správu o dokončení, môžete zastaviť XMLRPC.php jeden z dvoch prístupov nižšie.

Metóda 1: Odpojenie XMLRPC.PHP s pluginom

Zakázať XML-RPC na vašom wordpress je neuveriteľne jednoduché.

Prejsť na časť Pluginy\u003e Pridať nové Vo vašom WordPress administrátorskej konzole. Nájsť plugin Zakázať XML-RPC A nainštalujte ho, vyzerá to na obrázku nižšie:

Aktivujte plugin a všetko je pripravené. Tento plugin automaticky vloží potrebný kód na vypnutie XML-RPC.

Pamätajte však, že nainštalované pluginy môžu používať časti XML-RPC a potom jeho vypnutie môže spôsobiť konflikt plug-ins alebo jednotlivých častí a výstup z prevádzkového režimu.

Ak chcete len vypnúť jednotlivé prvky XML-RPC, ale nechajte iné pluginy a funkcie pracovať, potom odkazovať na takéto pluginy:

  • Zastavte útok XML-RPC. Tento plugin zastavte všetky útoky XML-RPC, ale je možné pokračovať v prevádzke takýchto pluginov ako jetpack a iné automatické nástroje a pluginy, ktoré im poskytujú prístup k súborom XMLRPC.PHP.
  • Ovládanie vydavateľstva XML-RPC. To vám umožní uložiť kontrolu a používať diaľkovo publikovanie.

Metóda 2: Odpojte xmlrpc.php ručne

Ak nechcete používať plugin a radšej to urobiť manuálne, postupujte podľa tohto prístupu. Zastaví všetky prichádzajúce požiadavky XMLRPC.PHP predtým, ako sa prenáša do WordPress.

Otvorte súbor File.htaccess. Možno budete musieť povoliť 'Zobraziť skryté súbory' v správcovi súborov alebo FTP klienta nájsť tento súbor.

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

# Block WordPress XMLRPC.PHP požiadavky OBJEDNÁVKA DPHNY, Povoliť popierať od 123.123.123.123

Konečné myšlienky

Všeobecne platí, že XML-RPC bol dobrým riešením niektorých problémov, ktoré vznikli kvôli vzdialenej publikácii na vašom wordpress. Zároveň sa však objavili niektoré bezpečnostné diery, ktoré boli dosť nebezpečné pre niektorých vlastníkov stránok na WordPress.

Aby ste zabezpečili, že vaša stránka je bezpečná, odporúča sa úplne vypnúť XMLRPC.PHP, ak nepotrebujete niektoré funkcie potrebné pre vzdialenú publikáciu a plugin Jetpack. Potom môžete použiť bypass plugins, ktoré vám umožňujú používať tieto funkcie, pričom opravujete bezpečnostné otvory.

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

Blokovali ste prístup k XML-RPC cez plugin alebo ručne? Alebo máte akékoľvek problémy s bezpečnosťou kvôli tomu, že to bolo prvé aktívne? Zdieľajte svoje skúsenosti v časti Nižšie.


Jeho príspevok tiež ukazuje, ako vykonávať autentifikáciu prehliadača, ako je uvedené nižšie:
$ queque \u003d XMLRPC_encode_request ("MethodName", Array ("MethodParam"));
$ AUTT \u003d BASE64_EnCode ($ Username. ":" $ Heslo);
$ Header \u003d (verzia_compare (phpversion (), "5.2.8"))
? Array ("Typ obsahu: text / xml", "Autorizácia: Basic $ Auth")
: "Typ obsahu: TEXT / XML R NEOTHORIZÁCIA: BASIC$ Auth "; //
$ Context \u003d stream_context_create (pole ("http" \u003d\u003e pole ("
"Metóda" \u003d\u003e "Post",
"Header" \u003d\u003e $ hlavička,
"Obsah" \u003d\u003e $
)));
$ Webservice \u003d. "http://www.example.com/rpc";
$ File \u003d File_Get_Contes ($ Webservice, False, $ Context);
$ Response \u003d XMLRPC_DECODE ($ FILE);
ak (xmlrpc_is_fault ($ odozva)) (
Return "XMLRPC: $ Response [FaultString] ($ Response [Gaumacode])";
) Inak (
Návrat $ odozvy;
}
?>
1 - editor Poznámka: Toto je fix z "Sanderswang DT PHP na gmail dot com"

Pred 16 rokmi.

Binárne struny (súprava s XMLRPC_SET_TYPE) Choďte do a ... Blok, ako by ste očakávali. Ale po každom 80. znaku, táto funkcia vloží XML entity ", ktorá je Unicode Newline, ako keby spôsobil, že riadok-wrap, ktorý je samozrejme hlúpe.

Silly hoci to môže byť, spôsobuje skutočné problémy pre niektoré XML-RPC servery, ako je http://jakarta.apache.org/xmlrpc/ (NEE HELMA). Stripping týchto subjektov s niečím ako

$ Req \u003d preg_replace ("/ /", "", xmlrpc_encode_request ("my.method", $ args);

funguje okolo problému.

Pred 11 rokmi.

Treba poznamenať, že kódujúce sa nezdá nieko, stačí zadať, čo sa deje do hlavičky XML.

Mali sme problémy s dvojitým kódovanými reťazcami UTF, ktoré sa ukladajú do databázy, keď používate túto funkciu Funche, pričom ho odosielajú na servlet Apache XML-RPC a uskladnenie v databáze MySQL. Bolo vyriešené nastavením "uniknúť" na "označenie" a "kódovanie" na "UTF-8" (Don "T zabudnite nastaviť" UTF-8 "v XMLRPC_DECODE).

Zdá sa, že UTF-8 kódované reťazce dostane Escapad s ich bajtami ako subjekty namiesto ich postáv ako entites.

Pred 9 rokmi.

Snažil sa vysielať pole ako nasledujúce s XMLRPC?
$ var1 \u003d pole (7 \u003d\u003e 14,9 \u003d\u003e 18);

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

Jediným riešením, ktoré som zistil, je predpísaný priestor k indexu:
$ var3 \u003d pole ("7" \u003d\u003e 14, "9" \u003d\u003e 18);

Použitie tejto metódy ste "ll dostanete správny výsledok. ($ Var1)

Pred 16 rokmi.

Túto funkciu by mala používať klienta XML RPC na vytvorenie užitočného zaťaženia XML pre požiadavku XML-RPC;

$ parames \u003d "System.Methodsignature";
$ METODOOD \u003d "SYSTEM.METHODHELP";
$ vyžadujú \u003d xmlrpc_encode_request ($ metóda, $ parames);
echo ($ quead);
?>

Vyrába;



system.Methodhelp.

system.Methodsignatúra.



Druhý argument rozpoznáva typ premennej a generuje správnu štruktúru XML-RPC. Viac informácií nájdete v XMLRPC_encode ().

Pred 12 rokmi.

Jednoduchý klient OO s preťažením funkcie:

pHP METO TEST_HELLOGORLD je preložený na XMLRPC Metóda Test.Hellogorld.

trieda rpcclient (

Private $ _methods;
Private $ _Context;
Private $ _url;

Funkcia __construct ($ URL, $ user, $ passwd) (
$ Auth \u003d base64_encode (sprintf ("% s:% s", $ user, $ passwd);
$ THO -\u003e _ Contekton \u003d Stream_context_Create (Array (
"http" \u003d\u003e pole (
"Metóda" \u003d\u003e "Post",
"Header" \u003d\u003e "Typ obsahu: text / xml \\ t
"Autorizácia: Základné $ AUTH",

)
));
$ THO -\u003e _ URL \u003d $ URL;

$ This-\u003e RegisterTod ("test_heloworld");

Funkcia __CALL ($ MethodName, $ Params)
Ak (Array_KEY_Existi ($ MethodName, $ This -\u003e _ metódy))
// On Applle La Fonchion RPC
$ M \u003d str_replace ("_", ".", $ Methodnaname);
$ r \u003d xmlrpc_encode_request ($ m, $ parames, pole ("verbelosť" \u003d\u003e "Newlines_only"));
$ C \u003d $ this -\u003e _ kontext;
Stream_context_set_option ($ C, "http", "obsah", $ r);
$ F \u003d FILE_GET_CONTENTY ($ THOTO -\u003e _ URL, FALSE, $ C);
$ Resp \u003d xmlrpc_decode ($ f);
Návrat $ resp;
) Inak (
// na appelle la fonchion de l "objet
call_user_method_array ($ MethodName, $ This, $ Params);
}
}

Súkromná funkcia RegistraTmethod ($ metóda) (
$ this -\u003e _ metódy [$ metóda] \u003d true;
}

Od poludnia, soboty na mojom serveri, kde asi 25 lokalít na WordPress bude hostované, divoké brzdy začali. Vzhľadom k tomu, že som sa podarilo prežiť predchádzajúce útoky (,) Nie som si všimol, okamžite som pochopil, čo bola vec.

Keď som prišiel, ukázalo sa, že heslá prechádzali + mnoho požiadaviek na XMLRPC.

V dôsledku toho bolo možné ho odrezať, hoci nie okamžite. Cat tri jednoduché techniky, ako sa tomu vyhnúť.

Tieto techniky sú s najväčšou pravdepodobnosťou známe každému, ale prišiel som na pár hrabok, ktoré som nenašiel v popisoch - náhle to ušetrí čas na niekoho.

1. Spustite busty, obmedziť pokusy o prihlásenie plugin - dajte ho, pretože iná ochrana silne zavesiť server, napríklad pri použití prihlasovacieho bezpečnostného riešenia plugin, server zomrel po pol hodine, plugin je veľmi načítanie databázy.

V nastavení nezabudnite zapnúť test "pre proxy" - inak bude definovať IP vášho servera pre všetkých a automaticky blokovať všetko.
Aktualizujte, ďakujeme, Ďakujeme, podrobnosti uvedené nižšie v komentároch - Tick "pre proxy" zapnite len vtedy, ak definícia nefunguje, keď je povolené "priame spojenie"

2. Odpojte XML RPC - vypnúť plugin XML-RPC (jednoducho ho aktivovať a všetko).

3. Zatvoriť WP-LOGIN.PHP - ak sa obrátite na stránku cez IP, plugin nefunguje a uhorky pokračujú do lokality DAB. Aby ste sa vyhli tomu, V.HTaccess Pridať:

Objednávka odmietnuť, dovoliť poprieť od všetkých

Súbor WP-LOGIN je skopírovaný, premenovaný na ľubovoľný podivný názov, napríklad POLOTNORMALLALNY.PHP a vo vnútri súboru s automatickým prenosom všetkých nápisov WP-LOGIN.PHP na POLOTOTNORMALLY.PHP.
Všetko, teraz môžete kontaktovať iba správcu vo vašom súbore.

Po týchto 3 jednoduchých krokoch, stránky začali lietať znova a prišiel pokoj.

No, náhle zaujímavé

Jedna možnosť vidieť, čo ste napadnutí. To možno vidieť v protokoloch ngginx (napríklad tu je cesta pre ACCESS DEBIAN / VAR / LOG / NIROUND).

Úvod do XML-RPC

V sieti existuje mnoho rôznych zdrojov, ktoré poskytujú používateľom určité informácie. Neexistujú bežné statické stránky, ale napríklad údaje získané z databázy alebo archívov. Môže to byť archív finančných údajov (meny, údaje o cenných papieroch), údaje o počasí alebo viac objemných informácií - novinky, články, správy z fórach. Takéto informácie sa môžu predložiť návštevníkom stránky, napríklad prostredníctvom formulára, ako odpoveď na žiadosť, alebo zakaždým, keď je možné dynamicky generovať. Ale obtiažnosť je, že často takéto informácie nie sú potrební tak veľa koncového používateľa - osoba, koľko iných systémov, programy, ktoré tieto údaje budú používať na ich výpočty alebo iné potreby.

Reálny príklad: Stránka bankovej stránky, na ktorej sú zobrazené meny citácie. Ak prejdete na stránku ako pravidelný používateľ, cez prehliadač, vidíte všetky návrhy stránky, bannery, menu a ďalšie informácie, ktoré "FRAMENTY" skutočným cieľom vyhľadávania je mena citácie. Ak potrebujete, aby tieto citácie do vášho internetového obchodu, potom nič iné nezostane hneď, ako ma manuálne vyberiete požadované údaje a prejdite cez schránku na vaše stránky. A tak musíte robiť každý deň. Neexistuje žiadna cesta von?

Ak sa rozhodnete problém "na čele", potom riešenie okamžite navrhuje: Program (skript na stránke), ktorý je potrebný pre údaje, prijíma stránku zo servera ako "obyčajný používateľ", demontáž (pars ) Výsledný HTML kód a zdôrazňuje potrebné informácie z neho. To môže byť vykonané bežným regulárnym výrazom, alebo s akýmkoľvek analyzátorom HTML. Komplexnosť prístupu je v jeho neelektivite. Po prvé, na získanie malej časti údajov (údaje o menách je doslova desiatky - iné znaky), musíte získať celú stránku, a to je aspoň niekoľko desiatok kilobajtov. Po druhé, s akoukoľvek zmenou kódového kódu, napríklad dizajn sa zmenil alebo niečo iné, náš analýza algoritmus bude musieť znovu. Áno, a zdroje budú vybrané slušné.

Vývojári preto prišli k rozhodnutiu - je potrebné vypracovať univerzálny mechanizmus, ktorý by umožnil transparentne (na úrovni protokolu a prepravného prostredia) a je ľahké vymieňať si údaje medzi programmi, ktoré môžu byť kdekoľvek, písomne Jazyk a práca pod kontrolou akýchkoľvek operačných systémov a na akúkoľvek hardvérovej platforme. Takýto mechanizmus sa teraz nazýva Loud termín "Web Services" (Web-Service), "SOAP", "Service-orientovaná architektúra). Pre výmenu údajov sa používajú otvorené a časovo testované štandardy - pre odosielanie správ HTTP (hoci môžete použiť napríklad iné protokoly - SMTP). Samotné údaje (v našom príklade - meny sadzby) sú prenášané zabalené na formát cez platformy - ako dokumenty XML. Na tento účel sa vynájde špeciálny štandard - mydlo.

Áno, teraz webové služby, mydlo a XML majú všetko na vypočutie, začnú aktívne zavádzať veľké spoločnosti, ako je IBM a Microsoft vyrábať nové produkty určené na pomoc úplným implementácii webových služieb.

Ale! Pre náš príklad s menovými kurzami, ktoré by mali byť prenášané z bankovej stránky v online obchode, takéto riešenie bude veľmi zložité. Koniec koncov, len opis štandardu mydla zaberá neslušnú jednu a pol tisíc stránok, a to nie je všetko. Pre praktické použitie budete musieť študovať stále pracovať s knižnicami tretích strán a rozšírenia (len počnúc php 5.0 obsahuje knižnicu na prácu s mydlom), napíšte stovky a tisíce riadkov svojho kódu. A to všetko získať niekoľko písmen a číslic - je zjavne veľmi ťažké a iracionálne.

Preto je tu ďalší, s úsekom môžete povedať alternatívny štandard pre výmenu informácií - XML-RPC. Bol navrhnutý s účasťou spoločnosti Microsoft Software Software Inc a je určený na jednotný prenos dát medzi aplikáciami prostredníctvom internetu. Môže nahradiť mydlo pri budovaní jednoduchých služieb, kde všetky "firemné" funkcie týchto webových služieb nie sú potrebné.

Čo znamená XML-RPC skratka? RPC je dešifrovaný ako volanie vzdialeného procesu - Voľný postup. To znamená, že aplikácia (bez ohľadu na to, skript na serveri alebo obvyklej aplikácii na klientskom počítači) môže byť transparentne pomocou metódy, ktorá je fyzicky implementovaná a vykonaná na inom počítači. XML sa používa na poskytnutie univerzálneho opisu popisu prenášaných údajov. Ako doprava, protokol HTTP sa aplikuje na odosielanie správ, čo vám umožňuje voľne výmenu dát prostredníctvom všetkých sieťových zariadení - smerovačov, firewalls, proxy serverov.

A tak, pre použitie, musíte mať: XML-RPC server, ktorý poskytuje jednu alebo viac metód, klienta XML-RPC, ktorý môže tvoriť správnu požiadavku a spracovať odpoveď serverov, a tiež poznať parametre servera potrebné pre Úspešná práca - adresa, názov metódy a metódy prenášané parametre.

Všetky práce s XML RPC sa vyskytujú v režime "Response-Response", to je jeden z rozdielov od štandardu SOAP, kde existujú koncepcie transakcií a schopnosť vykonávať odložené hovory (keď server uloží požiadavku a reaguje v určitom čase v budúcnosti). Tieto ďalšie funkcie budú užitočné pre výkonné firemné služby, výrazne komplikujú vývoj a podporu serverov a uvedú ďalšie požiadavky na rozhodovanie o rozhodovaní klienta.

Postup pre prácu s RPC XML začína tvorbou dotazu. Typická požiadavka vyzerá takto:

Post / RPC2 HTTP / 1.0
Užívateľský agenta: eshop-test / 1.1.1 (FreeBSD)
Hostiteľ: server.localnet.com.
Typ obsahu: text / xml
Dĺžka obsahu: 172



Testmeod.
Ahoj, XML-RPC!


V prvých riadkoch je vytvorená štandardná hlavička HTTP požiadavky. Povinné parametre zahŕňajú hostiteľa, typ údajov (typ MIME), ktorý musí byť text / xml, ako aj dĺžka správy. Štandard tiež označuje, že pole používateľa-agent musí byť vyplnené, ale môže obsahovať ľubovoľnú hodnotu.

Ďalej je obvyklá hlavička dokumentov XML. Vyšetrovanie koreňového prvku - Môže existovať len jeden a nemôže obsahovať takéto uzly ako dcérske spoločnosti. To znamená, že jedna žiadosť môže byť nazývaná iba jedna metóda na serveri.

Riadok Testmeod. Označuje, že nazývame metódu s názvom Testmeod. V prípade potreby tu môžete zadať názov programu alebo modulu obsahujúceho metódu, ako aj cestu k nemu. Špecifikácia XML-RPC, hoci ukladá určité obmedzenia na znakovú sadu, že metóda môže byť označená, ale ako ich interpretovať - \u200b\u200búplne závisí od implementácie servera.

Ďalej sú nastavené na prenášané parametre. Na to slúži sekcii Ktoré môžu obsahovať ľubovoľný počet subvencií Ktorý obsahuje parameter opísaný značkou . Parametre a typy údajov Pozrime sa o niečo ďalej. V našej verzii sa prenáša jeden parameter reťazca uzavretý v štítku. .

Po popise všetkých parametrov sledujete zatváracie značky. Žiadosť a odpoveď na XML-RPC Toto sú normálne dokumenty XML, takže všetky značky musia byť zatvorené. V XML-RPC nie sú však žiadne jednotlivé značky, aj keď v štandarde XML sú prítomné.

Tetener Budeme analyzovať odpoveď servera. HTTP Odpoveď titul, Ak je žiadosť úspešne spracovaná, server vráti odpoveď HTTP / 1.1 200 OK. Tiež ako v dotaze by ste mali správne zadať typ MIME, dĺžku správy a dátum dátumu odozvy.

Samotné telo je nasledovné:



pravda.


Teraz namiesto koreňovej značky označuje značku v ktorom výsledky spracovania dotazov sú okamžite investované. Nanešťastie, odpoveď nie je prenášaná metódou metódy, takže by ste ho mali uložiť na strane klienta, aby ste sa vyhli nejasnostiam, ak sú súčasne spôsobené rôzne metódy.

Ak sa pri spracovaní vašej požiadavky vyskytla chyba, namiesto toho Odpoveď bude prvok V ktorom štruktúra popisujúca chybu bude pripojená. Popis chyby obsahuje číselný kód chyby a jeho popis textu.

A teraz stručne zvážte typy údajov v XML-RPC. Celkové typy údajov sú 9 - sedem jednoduchých typov a 2 komplexné. Každý typ je opísaný svojím štítkom alebo súborom tagov (pre zložité typy).

Jednoduché typy:

Celé čísla Tag alebo ;

Logický typ Tag môžu prijať hodnoty 0/1 a pravdivé / nepravdivé;

ASCII-String - opisuje značku a môže obsahovať ľubovoľný reťazec znakov;

Čísla plávajúcich bodov Tag môže tiež obsahovať znak čísla, frakčná časť je oddelená bodom;

dátum a čas - opisuje značku a musí byť v súlade s formátom ISO8601. Na ďalšie spracovanie v skriptoch je takýto formát trochu nepohodlný, takže sa vždy konvertuje pri odosielaní / prijímaní dotazu. To môže urobiť špeciálnu funkciu ako súčasť knižnice, alebo ak nie, vývojár musí manuálne previesť dátum.

Posledný jednoduchý typ je string kódovaný v base64ktorý je opísaný značkou . Tento typ je s ním univerzálny, môžete prenášať všetky údaje medzi klientom a serverom, hoci množstvo údajov prenášaných kvôli takémuto kódujúcemu. To však je dôsledkom textového charakteru formátu protokolu a XML.

Komplexné typy sú reprezentované štruktúrmi a poliami. Štruktúra je určená koreňovým prvkom ktoré môžu obsahovať ľubovoľný počet položiek definovanie každého člena štruktúry. Člen konštrukcie je opísaný dvoma tagmi: prvý , opisuje názov člena, druhý, , Obsahuje hodnotu člena (spolu so štítkom popisujúcou typ údajov).

Polia nemajú mená a označujú značku ktorý obsahuje jeden prvok a jednu alebo viac dcérskych spoločností kde sú špecifikované špecifické údaje. Pole môže obsahovať akékoľvek iné typy v náhodnom poradí, ako aj iné polia, čo vám umožňuje opísať multidimenzionálne polia. Môžete tiež opísať rad konštrukcií. Ale skutočnosť, že pole nemá v niektorých prípadoch komplikuje v niektorých prípadoch, na prenos komplexných údajov, ktoré musia byť opakovane zabalené na iné typy (napríklad na prenos niekoľkých polí, každé pole môže byť zabalené oddelene v a potom vytvorte jedno pole z týchto štruktúr).

Samozrejme, niekto povie, že takýto zoznam typov údajov je veľmi zlý a "nedovolí vám otočiť sa." Áno, ak potrebujete prenášať komplexné objekty alebo veľké množstvá dát, je lepšie použiť mydlo. A pre malé, nenáročné aplikácie, XML-RPC je plne vhodné, navyše, veľmi často, dokonca aj jeho schopnosti sa otočí príliš veľa! Ak berieme do úvahy jednoduchosť nasadenia, veľmi veľký počet knižníc pre takmer všetky jazyky a platformy, široká podpora v PHP, potom XML-RPC často jednoducho nemá žiadny konkurentmi. Hoci nie je možné okamžite poradiť ako univerzálne riešenie - v každom konkrétnom prípade je potrebné vyriešiť za okolností.