Hyrje në XML-RPC. Konkurse programimi Çfarë është e dukshme në regjistrat e serverit


Postimi i tij tregon gjithashtu se si të bëhet vërtetimi i shfletuesit, si më poshtë:
$kërkesa = xmlrpc_encode_kërkesa ("Emri i metodës" , grupi ("methodParam" ));
$auth = base64_encode ($username . ":" . $password );
$header = (version_compare(phpversion(), "5.2.8"))
? array("Lloji i përmbajtjes: tekst/xml" , "Autorizimi: $auth bazë " )
: "Lloji i përmbajtjes: tekst/xml\r\nAutorizimi: Bazë$auth " ; //
$context = stream_context_create (array("http" => grup(
"metod" => "POST" ,
"header" => $header ,
"content" => $kërkim
)));
$service web = "http://www.example.com/rpc";
$file = file_get_contents ($webservice, false, $context);
$përgjigje = xmlrpc_dekodi ($file);
nëse (xmlrpc_is_fault($response)) (
kthe "xmlrpc: $response [faultString] ($response [faultCode])" ;
) tjeter (
ktheje $response ;
}
?>
1 - SHËNIM I REDAKTORIT: KJO ËSHTË NJË RREGULLIM NGA "SandersWang dt php at gmail dot com"

16 vjet më parë

Vargjet binare (të vendosura me xmlrpc_set_type) hyjnë në a ...Blloko siç do të prisnit. Por pas çdo karakteri të 80-të, ky funksion fut entitetin XML " ", i cili është një linjë e re e Unicode, sikur të shkaktonte një mbështjellje rreshti, që është pa dyshim budalla.

Edhe pse pa kuptim mund të jetë, ajo shkakton probleme reale për disa serverë XML-RPC, si http://jakarta.apache.org/xmlrpc/ (nee Helma). Heqja e këtyre entiteteve me diçka të tillë

$req = preg_replace("/ /", "", xmlrpc_encode_kërkesa ("metoda ime", $args));

punon rreth problemit.

11 vjet më parë

Duhet të theksohet se kodimi nuk duket se kodon asgjë, thjesht specifikoni se çfarë hyn në kokën XML.

Kemi pasur probleme me vargjet UTF me kodim të dyfishtë që ruhen në bazën e të dhënave gjatë përdorimit të këtij funksioni, duke e dërguar atë në një server apache xml-rpc dhe duke e ruajtur në bazën e të dhënave mysql. Ajo u zgjidh duke vendosur "escape" në "markup" dhe "encoding" në "UTF-8" (mos harroni të vendosni "utf-8" edhe në xmlrpc_decode).

Duket se vargjet e koduara UTF-8 fshihen me bajtet e tyre si entitete në vend të karaktereve të tyre si entitete.

9 vjet më parë

A keni provuar ndonjëherë të transmetoni një grup si më poshtë me xmlrpc?
$var1=array(7=>14,9=>18);

Grupi i daljes duket krejt ndryshe! Do të duket kështu:
$var2=array(14,18);

Zgjidhja e vetme që gjeta është të paraqes një hapësirë ​​në indeks:
$var3=array(" 7"=>14," 9"=>18);

Duke përdorur këtë metodë do të merrni rezultatin e duhur. ($var1)

16 vjet më parë

Ky funksion duhet të përdoret nga një klient XML-RPC për të krijuar një ngarkesë XML për një kërkesë XML-RPC;

$params = "system.methodSignature" ;
$method = "system.methodHelp" ;
$kërkesë = xmlrpc_encode_request ($method, $params);
jehonë ($kërkesë);
?>

Prodhon;



sistem.metodaNdihmë

sistemi.metodaNënshkrimi



Argumenti i dytë njeh llojin e ndryshores dhe gjeneron strukturën e saktë XML-RPC. Shih xmlrpc_encode() për më shumë detaje.

12 vjet më parë

Klient i thjeshtë OO me mbingarkesë funksioni:

metoda php test_helloworld përkthehet në metodën xmlrpc test.helloworld.

Klasa RpcClient(

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

Funksioni __construct ($url, $user, $passwd) (
$auth = base64_encode(sprintf("%s:%s", $user,$passwd));
$this->_context = stream_context_create(array(
"http" => grup(
"metod" => "POST",
"header" => "Lloji i përmbajtjes: tekst/xml\r\n".
"Autorizimi: $auth bazë" ,

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

$this->registerMethod("Test_HelloWorld");

Funksioni __call ($methodName, $params) (
nëse (kyç_array_ekziston ($methodName,$this->_methods)) (
// në appelle la fonction RPC
$m = str_replace("_", ".", $methodName);
$r = xmlrpc_encode_kërkesa($m, $params,array("verbosity"=>"vetëm linjat_reja"));
$c = $this->_context;
stream_context_set_option($c,"http","përmbajtje",$r);
$f = file_get_contents($this->_url,false,$c);
$resp = xmlrpc_dekodi ($f);
ktheje $resp;
) tjeter (
// on appelle la fonction de l"objet
call_user_method_array($methodName, $this,$params);
}
}

Funksioni privat registerMethod ($method) (
$this->_methods[$method] = e vërtetë;
}

Hyrje në XML-RPC

Ka shumë burime të ndryshme në internet që u ofrojnë përdoruesve informacione të caktuara. Kjo nuk nënkupton faqe të zakonshme statike, por, për shembull, të dhëna të marra nga një bazë të dhënash ose arkiva. Ky mund të jetë një arkiv i të dhënave financiare (kurset e këmbimit, të dhënat e kuotave të letrave me vlerë), të dhënat e motit ose informacione më voluminoze - lajme, artikuj, mesazhe nga forumet. Një informacion i tillë mund t'i paraqitet vizitorit të faqes, për shembull, përmes një formulari, si përgjigje ndaj një kërkese, ose mund të gjenerohet në mënyrë dinamike çdo herë. Por vështirësia është se shpesh një informacion i tillë është i nevojshëm jo aq shumë nga përdoruesi përfundimtar - një person, por nga sisteme dhe programe të tjera që do t'i përdorin këto të dhëna për llogaritjet e tyre ose nevoja të tjera.

Shembull real: një faqe e një faqe interneti bankare që shfaq kuotat e monedhës. Nëse hyni në faqe si një përdorues i rregullt, përmes një shfletuesi, ju shihni të gjithë dizajnin e faqes, banderolat, menutë dhe informacione të tjera që "kornizon" qëllimin e vërtetë të kërkimit - kuotat e monedhës. Nëse ju duhet t'i vendosni këto kuota në dyqanin tuaj online, atëherë nuk mbetet gjë tjetër për të bërë veçse të zgjidhni manualisht të dhënat e nevojshme dhe t'i transferoni ato në faqen tuaj të internetit përmes kujtesës së fragmenteve. Dhe këtë do t'ju duhet ta bëni çdo ditë. A nuk ka vërtet rrugëdalje?

Nëse e zgjidhni problemin kokë më kokë, atëherë lind menjëherë një zgjidhje: një program (skrip në një faqe interneti) që ka nevojë për të dhëna, merr një faqe nga serveri si një "përdorues i rregullt", analizon (parzon) kodin html që rezulton dhe nxjerr informacionin e nevojshëm prej tij. Kjo mund të bëhet ose me një shprehje të rregullt të rregullt, ose duke përdorur ndonjë analizues html. Vështirësia e qasjes qëndron në joefektivitetin e saj. Së pari, për të marrë një pjesë të vogël të të dhënave (të dhënat për monedhat janë fjalë për fjalë një duzinë ose dy karaktere), duhet të merrni të gjithë faqen, e cila është të paktën disa dhjetëra kilobajt. Së dyti, me çdo ndryshim në kodin e faqes, për shembull, dizajni ka ndryshuar ose diçka tjetër, algoritmi ynë i analizës do të duhet të ribëhet. Dhe kjo do të marrë një sasi të mjaftueshme burimesh.

Prandaj, zhvilluesit arritën në një vendim - është e nevojshme të zhvillohet një lloj mekanizmi universal që do të lejonte shkëmbim transparent (në nivel protokolli dhe transmetimi) dhe shkëmbim të lehtë të të dhënave midis programeve që mund të vendosen kudo, të shkruhen në çdo gjuhë. dhe ekzekutohet nën çdo sistem operativ, sisteme dhe në çdo platformë harduerike. Një mekanizëm i tillë quhet tani termat me zë të lartë "shërbime në internet", "SOAP", "arkitekturë e orientuar drejt shërbimit". Për shkëmbimin e të dhënave, përdoren standarde të hapura dhe të testuara me kohë - protokolli HTTP përdoret për të transmetuar mesazhe (megjithëse mund të përdoren protokolle të tjera - SMTP, për shembull). Vetë të dhënat (në shembullin tonë, kurset e këmbimit) transmetohen të paketuara në një format ndër-platformë - në formën e dokumenteve XML. Për këtë qëllim, u shpik një standard i veçantë - SOAP.

Po, tani shërbimet e uebit, SOAP dhe XML janë në gojën e të gjithëve, ato kanë filluar të zbatohen në mënyrë aktive dhe korporatat e mëdha si IBM dhe Microsoft po nxjerrin produkte të reja të dizajnuara për të ndihmuar zbatimin e plotë të shërbimeve të uebit.

Por! Për shembullin tonë me kurset e këmbimit që duhet të transmetohen nga faqja e internetit e bankës në motorin e dyqanit online, një zgjidhje e tillë do të jetë shumë e vështirë. Në fund të fundit, vetëm përshkrimi i standardit SOAP merr një mijë e gjysmë faqe të turpshme, dhe kjo nuk është e gjitha. Për përdorim praktik, do t'ju duhet gjithashtu të mësoni se si të punoni me bibliotekat dhe shtesat e palëve të treta (vetëm duke filluar nga PHP 5.0 ai përfshin një bibliotekë për të punuar me SOAP) dhe të shkruani qindra e mijëra rreshta të kodit tuaj. Dhe e gjithë kjo për të marrë disa shkronja dhe numra është padyshim shumë e rëndë dhe irracionale.

Prandaj, ekziston një tjetër, mund të thuhet, standard alternativ për shkëmbimin e informacionit - XML-RPC. Ai u zhvillua me pjesëmarrjen e Microsoft nga UserLand Software Inc dhe është krijuar për transferimin e unifikuar të të dhënave midis aplikacioneve përmes Internetit. Ai mund të zëvendësojë SOAP kur ndërton shërbime të thjeshta ku nuk nevojiten të gjitha aftësitë "ndërmarrje" të shërbimeve reale të uebit.

Çfarë do të thotë shkurtesa XML-RPC? RPC qëndron për thirrjen e procedurës në distancë. Kjo do të thotë që një aplikacion (qoftë një skrip në server ose një aplikacion i rregullt në kompjuterin e klientit) mund të përdorë në mënyrë transparente një metodë që zbatohet fizikisht dhe ekzekutohet në një kompjuter tjetër. XML përdoret këtu për të ofruar një format universal për përshkrimin e të dhënave të transmetuara. Si një transport, protokolli HTTP përdoret për të transmetuar mesazhe, i cili ju lejon të shkëmbeni pa probleme të dhëna përmes çdo pajisjeje rrjeti - ruterë, mure zjarri, serverë proxy.

Dhe kështu, për t'u përdorur duhet të keni: një server XML-RPC që ofron një ose më shumë metoda, një klient XML-RPC që mund të gjenerojë një kërkesë të saktë dhe të përpunojë përgjigjen e serverit, dhe gjithashtu të njohë parametrat e serverit të nevojshëm për funksionimin e suksesshëm - adresa, emri i metodës dhe parametrat e kaluar.

E gjithë puna me XML-RPC ndodh në modalitetin "kërkesë-përgjigje", ky është një nga ndryshimet midis teknologjisë dhe standardit SOAP, ku ekzistojnë edhe konceptet e transaksioneve dhe aftësia për të bërë thirrje të vonuara (kur serveri kursen kërkesën dhe i përgjigjet asaj në një kohë të caktuar në të ardhmen). Këto veçori shtesë janë më të dobishme për shërbime të fuqishme të korporatës; ato komplikojnë ndjeshëm zhvillimin dhe mbështetjen e serverëve dhe vendosin kërkesa shtesë për zhvilluesit e zgjidhjeve të klientëve.

Procedura për të punuar me XML-RPC fillon me formimin e një kërkese. Një kërkesë tipike duket si kjo:

POST /RPC2 HTTP/1.0
Përdoruesi-Agjent: eshop-test/1.1.1 (FreeBSD)
Pritësi: server.localnet.com
Lloji i përmbajtjes: tekst/xml
Gjatësia e përmbajtjes: 172



Metoda e testimit
Përshëndetje XML-RPC!


Rreshtat e para formojnë titullin standard të kërkesës HTTP POST. Parametrat e kërkuar përfshijnë hostin, llojin e të dhënave (lloji MIME), i cili duhet të jetë tekst/xml dhe gjatësia e mesazhit. Standardi specifikon gjithashtu se fusha User-Agent duhet të plotësohet, por mund të përmbajë një vlerë arbitrare.

Më pas vjen kreu i zakonshëm i dokumentit XML. Elementi rrënjësor i kërkesës është , mund të ketë vetëm një dhe nuk mund të përmbajë nyje të tilla si fëmijë. Kjo do të thotë që një kërkesë mund të thërrasë vetëm një metodë në server.

Linjë Metoda e testimit tregon se ne po thërrasim një metodë të quajtur TestMetod. Nëse është e nevojshme, këtu mund të specifikoni emrin e programit ose modulit që përmban metodën, si dhe rrugën drejt tij. Specifikimi XML-RPC, megjithëse vendos disa kufizime në grupin e karaktereve që mund të përdoren për të treguar një metodë, mënyra se si t'i interpretoni ato varet tërësisht nga zbatimi i serverit.

Më pas, vendosen parametrat e transmetuar. Ky seksion përdoret për këtë. Që mund të përmbajë një numër arbitrar nënelementesh Të cilat përmbajnë parametrin e përshkruar nga etiketa . Ne do t'i shikojmë parametrat dhe llojet e të dhënave pak më tej. Në versionin tonë, metodës i kalohet një parametër vargu i mbyllur në etiketë .

Përshkrimi i të gjithë parametrave pasohet nga mbyllja e etiketave. Kërkesa dhe përgjigja në XML-RPC janë dokumente të rregullta XML, kështu që të gjitha etiketat duhet të mbyllen. Por nuk ka asnjë etiketë të vetme në XML-RPC, megjithëse ato janë të pranishme në standardin XML.

Tani le të shohim përgjigjen e serverit. Titulli i përgjigjes HTTP është normal; nëse kërkesa përpunohet me sukses, serveri kthen një përgjigje HTTP/1.1 200 OK. Ashtu si në kërkesë, duhet të specifikoni saktë llojin MIME, gjatësinë e mesazhit dhe datën e gjenerimit të përgjigjes.

Vetë organi i përgjigjes është si më poshtë:



e vërtetë


Tani në vend të etiketës rrënjë tregohet etiketa , i cili përmban menjëherë rezultatet e përpunimit të kërkesës. Fatkeqësisht, përgjigja nuk e kalon emrin e metodës, kështu që duhet ta ruani në anën e klientit për të shmangur konfuzionin nëse thirren metoda të ndryshme në të njëjtën kohë.

Nëse ka ndodhur një gabim gjatë përpunimit të kërkesës suaj, në vend të Përgjigja do të përmbajë elementin , në të cilën do të vendoset një strukturë që përshkruan gabimin. Përshkrimi i gabimit përmban një kod gabimi numerik dhe një përshkrim teksti.

Tani le të hedhim një vështrim të shkurtër në llojet e të dhënave në XML-RPC. Gjithsej janë 9 lloje të dhënash - shtatë lloje të thjeshta dhe 2 komplekse. Çdo lloj përshkruhet nga etiketa e tij ose grupi i etiketave (për llojet komplekse).

Llojet e thjeshta:

Numrat e plotë- etiketë ose ;

Lloji Boolean- etiketë , mund të marrë të dy vlerat 0/1 dhe true/false;

Vargu ASCII- përshkruar nga etiketa dhe mund të përmbajë një varg arbitrar karakteresh;

Numrat me pikë lundruese- etiketë , mund të përmbajë edhe një shenjë numerike, pjesa thyesore ndahet me një pikë;

Data dhe ora- përshkruar nga etiketa dhe duhet të përputhet me formatin iso8601. Për përpunim të mëtejshëm në skriptet, ky format është pak i papërshtatshëm, kështu që gjithmonë konvertohet kur dërgoni/merni një kërkesë. Kjo mund të bëhet nga një funksion i veçantë brenda bibliotekës, ose, nëse nuk ka, zhvilluesi duhet ta konvertojë datën manualisht.

Lloji i fundit i thjeshtë është vargu i koduar base64, e cila përshkruhet nga etiketa . Ky lloj është universal; mund të përdoret për të transferuar çdo të dhënë midis klientit dhe serverit, megjithëse vëllimi i të dhënave të transferuara rritet për shkak të një kodimi të tillë. Por kjo është pasojë e natyrës tekstuale të protokollit dhe formatit XML në veçanti.

Llojet komplekse përfaqësohen nga struktura dhe vargje. Struktura përcaktohet nga elementi rrënjë , i cili mund të përmbajë një numër arbitrar elementesh , duke përcaktuar çdo anëtar të strukturës. Një anëtar i strukturës përshkruhet nga dy etiketa: së pari, , përshkruan emrin e anëtarit, së dyti, , përmban vlerën e anëtarit (së bashku me një etiketë që përshkruan llojin e të dhënave).

Vargjet nuk kanë emra dhe përshkruhen nga etiketa e cila përmban një element , dhe një ose më shumë elementë fëmijë , ku specifikohen të dhëna specifike. Një grup mund të përmbajë çdo lloj tjetër në çdo renditje, si dhe vargje të tjera, gjë që ju lejon të përshkruani vargje shumëdimensionale. Ju gjithashtu mund të përshkruani një sërë strukturash. Por fakti që grupi nuk ka një emër e ndërlikon përdorimin e tij në disa raste; për të transferuar të dhëna komplekse, ato duhet të paketohen në mënyrë të përsëritur në lloje të tjera (për shembull, për të transferuar disa vargje, mund të paketoni secilën grup veç e veç në një strukturë , dhe më pas krijoni një grup nga këto struktura).

Sigurisht, dikush do të thotë se një listë e tillë e llojeve të të dhënave është shumë e varfër dhe "nuk ju lejon të zgjeroheni". Po, nëse keni nevojë të transferoni objekte komplekse ose sasi të mëdha të dhënash, atëherë është më mirë të përdorni SOAP. Dhe për aplikacione të vogla, jokërkues, XML-RPC është mjaft i përshtatshëm; për më tepër, shumë shpesh edhe aftësitë e tij dalin të jenë shumë! Duke marrë parasysh lehtësinë e vendosjes, një numër shumë të madh bibliotekash për pothuajse çdo gjuhë dhe platformë, dhe mbështetjen e gjerë në PHP, atëherë XML-RPC shpesh thjesht nuk ka konkurrentë. Edhe pse nuk mund të rekomandohet menjëherë si një zgjidhje universale - në çdo rast specifik duhet të vendoset sipas rrethanave.

Teknologjia XML-RPC përdoret në sistemin WordPress për veçori të ndryshme të këndshme si pingbacks, ndjekje, menaxhim në distancë i faqes pa hyrë në panelin e administratorit, etj. Fatkeqësisht, sulmuesit mund ta përdorin atë për të kryer sulme DDoS në faqet e internetit. Kjo do të thotë, ju krijoni projekte të bukura, interesante WP për veten tuaj ose me porosi, dhe në të njëjtën kohë, pa dyshuar për asgjë, mund të jeni pjesë e një botneti DDoS. Duke lidhur dhjetëra e qindra mijëra sajte së bashku, njerëzit e këqij krijojnë një sulm të fuqishëm ndaj viktimës së tyre. Edhe pse në të njëjtën kohë edhe faqja juaj vuan, sepse... ngarkesa shkon në hostin ku ndodhet.

Dëshmia e një aktiviteti të tillë të keq mund të jetë në regjistrat e serverit (access.log në nginx), që përmbajnë rreshtat e mëposhtëm:

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

Por le të kthehemi te dobësia XML-RPC. Vizualisht, ai manifestohet në hapjen e ngadaltë të faqeve në serverin tuaj ose pamundësinë për t'i ngarkuar ato fare (gabim 502 Bad Gateway). Mbështetja teknike e hostit tim FASTVPS konfirmoi supozimet e mia dhe këshilloi:

  1. Përditësoni WordPress në versionin më të fundit së bashku me shtojcat. Në përgjithësi, nëse ndiqni, mund të keni lexuar për nevojën për të instaluar versionin më të fundit 4.2.3. për shkak të kritikave të sigurisë (ashtu si versionet e mëparshme). Me pak fjalë, është mirë të përditësohet.
  1. Instaloni shtojcën Disable XML-RPC Pingback.

Çaktivizimi i XML-RPC në WordPress

Më parë, më duket se opsioni për të aktivizuar/çaktivizuar XML-RPC ishte diku në cilësimet e sistemit, por tani nuk mund ta gjej atje. Prandaj, mënyra më e lehtë për ta hequr qafe atë është të përdorni shtojcën e duhur.

Gjeni dhe shkarkoni Disable XML-RPC Pingback ose instalojeni direkt nga paneli i administratorit të sistemit. Nuk keni nevojë të konfiguroni asgjë shtesë, moduli fillon të funksionojë menjëherë. Ai heq metodat pingback.ping dhe pingback.extensions.getPingbacks nga ndërfaqja XML-RPC. Për më tepër, ai heq X-Pingback nga titujt HTTP.

Në një nga bloget gjeta disa opsione të tjera për heqjen e çaktivizimit të XML-RPC.

1. Çaktivizoni XML-RPC në shabllon.

Për ta bërë këtë, shtoni rreshtin e mëposhtëm në skedarin functions.php të temës:

Porosit Refuzo, Lejo Mohimin nga të gjithë

Unë personalisht nuk i kam përdorur dy metodat e fundit, sepse... Kam lidhur shtojcën Disable XML-RPC Pingback - mendoj se do të jetë e mjaftueshme. Vetëm për ata që nuk i pëlqejnë instalimet e panevojshme, unë sugjerova opsione alternative.

Duke filluar nga mesdita e së shtunës, serveri im, ku strehohen rreth 25 faqe Wordpress, filloi të përjetonte ngadalësime të mëdha. Meqenëse arrita t'i mbijetoja sulmeve të mëparshme ( , ) pa u vënë re, nuk e kuptova menjëherë se çfarë po ndodhte.

Kur e kuptova, doli që fjalëkalimet po detyroheshin brutalisht + shumë kërkesa për XMLRPC.

Si rezultat, ne arritëm t'i ndërpresim të gjitha, por jo menjëherë. Këtu janë tre truke të thjeshta se si ta shmangni këtë.

Këto teknika me shumë mundësi janë të njohura për të gjithë, por unë shkela disa gabime që nuk i gjeta në përshkrime - mbase kjo do t'i kursejë dikujt kohë.

1. Ndaloni kërkimin, instaloni shtojcën Limit Login Ttempts - instaloni, pasi mbrojtjet e tjera ngadalësojnë shumë serverin, për shembull, kur përdorni shtojcën Login Security Solution, serveri vdiq pas gjysmë ore, shtojca ngarkon shumë bazën e të dhënave .

Në cilësimet, sigurohuni që të aktivizoni kutinë e kontrollit "Për përfaqësuesin" - përndryshe do të përcaktojë IP-në e serverit tuaj për të gjithë dhe do të bllokojë automatikisht të gjithë.
UPDATE, faleminderit, detajet janë më poshtë në komente - aktivizoni kutinë e kontrollit "Për përfaqësuesin" vetëm nëse përkufizimi nuk funksionon kur aktivizohet "Lidhja direkte"

2. Çaktivizo XML-RPC - shtojca Disable XML-RPC (është e lehtë për t'u aktivizuar dhe kaq).

3. Mbyll wp-login.php - nëse hyni në sajt nëpërmjet IP-së, plugin-i nuk funksionon dhe zgjedhësit vazhdojnë ta prishin faqen. Për të shmangur këtë, shtoni në .htaccess:

Porosit Refuzo, Lejo Mohimin nga të gjithë

Ne kopjojmë skedarin wp-login, e riemërtojmë në ndonjë emër të çuditshëm, për shembull poletnormalny.php, dhe brenda skedarit, përdorim autocorrect për të ndryshuar të gjitha mbishkrimet wp-login.php në poletnormalny.php.
Kjo është ajo, tani ju mund të hyni në panelin e administratorit vetëm duke përdorur skedarin tuaj.

Pas këtyre 3 hapave të thjeshtë, faqet filluan të fluturojnë përsëri dhe paqja erdhi.

Epo, papritmas është interesante

Një nga opsionet është të shikoni nëse jeni duke u sulmuar. Kjo mund të shihet në regjistrat e nginx (për shembull, këtu është shtegu për skedarin Debian /var/log/nginx access.log).

WordPress ka pasur gjithmonë një mjet të integruar për të hyrë në distancë në faqen tuaj. Në të vërtetë, ndonjëherë ju duhet të shkoni në faqen tuaj, por kompjuteri juaj është larg jush. Për një kohë të gjatë, zgjidhja ishte një skedar i quajtur xmlrpc.php. Megjithatë, vitet e fundit kjo dosje është bërë më shumë problem sesa zgjidhje.

Më poshtë do të hedhim një vështrim më të afërt në xmlrpc.php dhe pse u krijua. Ne do të shqyrtojmë gjithashtu çështjet e zakonshme të sigurisë që mund të shkaktojë dhe si t'i rregullojmë ato për faqen tuaj të WordPress.

XML-RPC është një veçori e WordPress që lejon transferimin e të dhënave, me HTTP që shërben si transport dhe XML për kodim. Duke qenë se WordPress nuk është një sistem i mbyllur dhe shpesh komunikon me sisteme të tjera, janë gjetur zgjidhje për këtë problem.

Për shembull, le të themi se dëshironi të postoni në faqen tuaj të internetit nga telefoni juaj celular. Duhet të përdorni aksesin në distancë të ofruar nga xmlrpc.php.

Funksionaliteti kryesor i xmlrpc.php është aftësia për t'u lidhur me sitin nga një smartphone, zbatimi i ndjekjeve dhe lidhjeve nga faqet e tjera dhe disa funksione që lidhen me shtojcën Jetpack.

Pse u krijua Xmlrpc.php dhe si u përdor?

Zbatimi i XML-RPC shkon shumë prapa në ditët e para të WordPress dhe madje edhe përpara se WordPress të bëhej WordPress.

Në ditët e para të internetit, lidhjet ishin shumë të ngadalta dhe procesi i regjistrimit dhe publikimit në ueb ishte shumë më i vështirë dhe kërkonte kohë. Në vend që të bënin ndryshime direkt përmes shfletuesit, shumica i bënë ato jashtë linje dhe më pas kopjuan dhe ngjitën përmbajtjen e tyre në internet. Dhe ky proces ishte larg idealit.

Zgjidhja (në atë kohë) ishte krijimi i një klienti blogimi offline ku mund të kompozoni përmbajtjen tuaj, më pas të lidheni me blogun tuaj dhe ta publikoni atë. Kjo lidhje është bërë nëpërmjet XML-RPC. Me funksionalitetin kryesor XML-RPC, aplikacionet e hershme duke përdorur këto lidhje u dhanë njerëzve mundësinë për të hyrë në faqet e tyre të WordPress nga pajisje të tjera.

XML-RPC sot

Në vitin 2008, me versionin 2.6 të WordPress, u prezantua një opsion për të aktivizuar ose çaktivizuar XML-RPC. Sidoqoftë, me lëshimin e aplikacionit WordPress iPhone, mbështetja XML-RPC u aktivizua si parazgjedhje dhe nuk kishte asnjë mundësi për ta çaktivizuar atë. Kështu mbetet edhe sot.

Sigurisht, funksionaliteti i ofruar nga ky skedar është ulur ndjeshëm me kalimin e kohës, dhe madhësia e skedarit është ulur nga 83 kb në 3 kb, ai nuk luan më një rol të tillë si më parë.

Vetitë XML-RPC

Me ndërfaqen e re të programimit të aplikacionit WordPress (API), mund të presim që XML-RPC të çaktivizohet plotësisht. Sot kjo API e re është ende në testim dhe mund të aktivizohet vetëm nëpërmjet një shtojce të veçantë.

Edhe pse mund të prisni që API të përfshihet drejtpërdrejt në bërthamën e WordPress në të ardhmen, duke eliminuar plotësisht nevojën për xmlrpc.php.

API i ri nuk është i përsosur, por ofron siguri të mirë dhe të besueshme, ndryshe nga xmlrpc.php.

Pse çaktivizoni Xmlrpc.php

Problemi më i madh me XML-RPC është siguria. Problemi nuk lidhet drejtpërdrejt me XML-RPC, por mund të përdoret për të mundësuar një sulm në faqen tuaj.

Sigurisht, ju mund të mbroni veten me një fjalëkalim shumë të fortë dhe shtojca sigurie të WordPress. Por mënyra më e mirë e mbrojtjes është thjesht ta fikni.

Ekzistojnë dy dobësi kryesore të XML-RPC që janë shfrytëzuar në të kaluarën.

I pari përdor sulme me forcë brutale për të fituar akses në faqen tuaj. Sulmuesi do të përpiqet të fitojë akses në faqen tuaj duke përdorur xmlrpc.php duke provuar kombinime të ndryshme të emrave të përdoruesve dhe fjalëkalimeve. Ata mund të përdorin në mënyrë efektive një komandë për të testuar qindra fjalëkalime të ndryshme. Kjo u lejon atyre të anashkalojnë mjetet e sigurisë që normalisht do të zbulonin dhe bllokonin sulmet me forcë brutale.

E dyta është marrja e sajtit jashtë linje përmes një sulmi DDoS. Hakerët do të përdorin njoftimin e kundërt në WordPress për ta dërguar atë në mijëra sajte në të njëjtën kohë. Ky funksion xmlrpc.php u jep hakerëve një numër pothuajse të pafund adresash IP për të përhapur një sulm DDoS.

Për të kontrolluar nëse XML-RPC po funksionon në faqen tuaj, mund ta ekzekutoni atë duke përdorur një mjet të quajtur XML-RPC Validator. Drejtoni faqen tuaj me mjetin dhe nëse merrni një gabim, do të thotë që nuk keni mbështetje XML-RPC.

Nëse merrni një mesazh suksesi, mund të ndaloni xmlrpc.php duke përdorur një nga dy qasjet më poshtë.

Metoda 1: Çaktivizo Xmlrpc.php duke përdorur një shtojcë

Çaktivizimi i XML-RPC në faqen tuaj të WordPress është jashtëzakonisht i lehtë.

Shkoni te seksioni Shtojcat › Shto të reja në konsolën tuaj të administratorit të WordPress. Gjeni një shtojcë Çaktivizo XML-RPC dhe instaloni atë, duket si fotografia më poshtë:

Aktivizoni shtojcën dhe keni mbaruar. Kjo shtojcë do të fusë automatikisht kodin e nevojshëm për të çaktivizuar XML-RPC.

Sidoqoftë, mbani mend se shtojcat e instaluara mund të përdorin pjesë të XML-RPC dhe më pas çaktivizimi i tij mund të shkaktojë një konflikt midis shtojcave ose pjesëve të tyre individuale dhe t'i nxjerrë ato nga modaliteti i punës.

Nëse dëshironi të çaktivizoni vetëm elementë të veçantë XML-RPC, por të lejoni shtojcat dhe veçoritë e tjera të funksionojnë, atëherë shikoni shtojcat si këto:

  • Ndaloni sulmin XML-RPC. Kjo shtojcë do të ndalojë të gjitha sulmet XML-RPC, por do të lejojë shtojcat si Jetpack dhe mjetet dhe shtojcat e tjera të automatizuara të vazhdojnë të funksionojnë duke u dhënë atyre akses në skedarët xmlrpc.php.
  • Kontrollo botimin XML-RPC. Kjo ju lejon të ruani kontrollin dhe të publikoni në distancë.

Metoda 2: Çaktivizoni manualisht Xmlrpc.php

Nëse nuk dëshironi të përdorni një shtojcë dhe preferoni ta bëni atë me dorë, ndiqni këtë qasje. Ai do të ndalojë të gjitha kërkesat hyrëse xmlrpc.php përpara se të kalojë në WordPress.

Hapni skedarin .htaccess. Mund t'ju duhet të aktivizoni 'tregoni skedarët e fshehur' në menaxherin tuaj të skedarëve ose klientin FTP për të gjetur këtë skedar.

Ngjitni këtë kod në skedar .htaccess:

# Blloko kërkesat e WordPress xmlrpc.php urdhëro moho, lejo moho nga të gjitha lejet nga 123.123.123.123

Mendimet Përfundimtare

Në përgjithësi, XML-RPC ishte një zgjidhje solide për disa nga problemet që erdhën me publikimin në distancë në faqen tuaj të WordPress. Sidoqoftë, në të njëjtën kohë, u shfaqën disa vrima sigurie që doli të ishin mjaft të rrezikshme për disa pronarë të faqeve të WordPress.

Për ta mbajtur faqen tuaj të sigurt, rekomandohet të çaktivizoni plotësisht xmlrpc.php nëse nuk keni nevojë për disa nga veçoritë e kërkuara nga publikimi në distancë dhe shtojca Jetpack. Më pas mund të përdorni shtojcat e zgjidhjes që ju lejojnë t'i përdorni këto veçori gjatë korrigjimit të vrimave të sigurisë.

Me kalimin e kohës, ne mund të presim që funksionaliteti XML-RPC të integrohet në një API të re të WordPress që do të mbështesë aksesin në distancë pa sakrifikuar sigurinë.

A e keni bllokuar aksesin në XML-RPC nëpërmjet një shtojce ose manualisht? Apo kishte ndonjë problem sigurie sepse ishte aktive më parë? Ndani përvojën tuaj në komentet më poshtë.