Úvod do XML-RPC. Soutěže v programování Co je vidět v protokolech serveru


Jeho příspěvek také ukazuje, jak provést ověření prohlížeče, jak je uvedeno níže:
$request = xmlrpc_encode_request ("metodaName" , array("methodParam" ));
$auth = base64_encode ($username . ":" . $heslo );
$header = (version_compare(phpversion(), "5.2.8"))
? array("Content-Type: text/xml" , "Autorizace: Basic $auth " )
: "Typ obsahu: text/xml\r\nAutorizace: Základní$auth "; //
$context = stream_context_create (array("http" => array(
"metoda" => "POST" ,
"header" => $header ,
"obsah" => $požadavek
)));
$webservice = "http://www.example.com/rpc";
$file = file_get_contents($webservice, false, $kontext);
$response = xmlrpc_decode ($soubor);
if (xmlrpc_is_fault($response)) (
return "xmlrpc: $response [ faultString ] ($response [ faultCode ] )" ;
) jinak (
vrátit $odpověď ;
}
?>
1 – POZNÁMKA REDAKCE: TOTO JE OPRAVA OD „SandersWang dt php at gmail dot com“

před 16 lety

Binární řetězce (nastavené pomocí xmlrpc_set_type) jdou do a ...blok, jak byste očekávali. Ale po každém 80. znaku tato funkce vloží entitu XML „ “, což je nový řádek Unicode, jako by způsobovala zalamování řádků, což je jistě hloupé.

Ačkoli to může být hloupé, způsobuje to skutečné problémy některým serverům XML-RPC, jako je http://jakarta.apache.org/xmlrpc/ (rozená Helma). Odstraňování těchto entit něčím podobným

$req = preg_replace("/ /", "", xmlrpc_encode_request("moje.metoda", $args));

funguje kolem problému.

před 11 lety

Je třeba poznamenat, že kódování zdánlivě nic nekóduje, pouze specifikuje, co jde do hlavičky XML.

Při použití této funkce jsme měli problémy s dvojitě zakódovanými řetězci UTF, které byly ukládány do databáze, odesílány do servletu apache xml-rpc a ukládány do databáze mysql. Vyřešilo se to nastavením "escaping" na pouhé "markup" a "encoding" na "UTF-8" (nezapomeňte také nastavit "utf-8" v xmlrpc_decode).

Zdá se, že řetězce zakódované v UTF-8 se uniknou se svými bajty jako entitami namísto jejich znaků jako entit.

před 9 lety

Zkoušeli jste někdy přenášet pole, jako je následující, pomocí xmlrpc?
$var1=pole(7=>14,9=>18);

Výstupní pole vypadá úplně jinak! Bude to vypadat takto:
$var2=pole(14,18);

Jediné řešení, které jsem našel, je přidat před index mezeru:
$var3=array(" 7"=>14," 9"=>18);

Pomocí této metody získáte správný výsledek. ($var1)

před 16 lety

Tuto funkci by měl používat klient XML-RPC k vytvoření datové části XML pro požadavek XML-RPC;

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

Vyrábí;



system.metodaNápověda

system.metodaPodpis



Druhý argument rozpozná typ proměnné a vygeneruje správnou strukturu XML-RPC. Další podrobnosti viz xmlrpc_encode().

před 12 lety

Jednoduchý OO klient s funkcí Overload:

metoda php test_helloworld je přeložena do metody xmlrpc test.helloworld.

třída RpcClient(

soukromé $_methods;
soukromý $_kontext;
private $_url;

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

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

$this->registerMethod("Test_HelloWorld");

Funkce __call($methodName, $params) (
if (array_key_exists($methodName,$this->_methods)) (
// na appelle la fonction RPC
$m = str_replace("_", ".", $metodaName);
$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);
vrátit $resp;
) jinak (
// na appelle la fonction de l"objet
call_user_method_array($metodaNazev, $toto,$paramy);
}
}

Metoda registru soukromé funkce ($method) (
$this->_methods[$method] = true;
}

Úvod do XML-RPC

Na internetu existuje mnoho různých zdrojů, které uživatelům poskytují určité informace. Nemyslí se tím běžné statické stránky, ale například data získaná z databáze nebo archivů. Může se jednat o archiv finančních údajů (směnné kurzy, údaje o kotacích cenných papírů), údaje o počasí nebo obsáhlejší informace – novinky, články, zprávy z fór. Takové informace mohou být návštěvníkovi stránky prezentovány například prostřednictvím formuláře, jako odpověď na požadavek, nebo mohou být pokaždé generovány dynamicky. Potíž je ale v tom, že často takové informace nepotřebuje ani tak koncový uživatel – člověk, ale jiné systémy a programy, které tato data využijí pro své výpočty nebo jiné potřeby.

Skutečný příklad: stránka bankovního webu, která zobrazuje kotace měn. Pokud na stránku přistupujete jako běžný uživatel prostřednictvím prohlížeče, vidíte veškerý design stránky, bannery, nabídky a další informace, které „rámují“ skutečný účel vyhledávání – kotace měn. Pokud potřebujete zadat tyto nabídky do svého internetového obchodu, nezbývá nic jiného, ​​než ručně vybrat potřebná data a přenést je přes schránku na váš web. A budete to muset dělat každý den. Opravdu neexistuje žádná cesta ven?

Pokud problém vyřešíte přímo, pak se okamžitě objeví řešení: program (skript na webu), který potřebuje data, přijme stránku ze serveru jako „běžný uživatel“, analyzuje (analyzuje) výsledný html kód a extrahuje z něj potřebné informace. To lze provést buď regulárním regulárním výrazem, nebo pomocí libovolného html analyzátoru. Obtížnost přístupu spočívá v jeho neúčinnosti. Za prvé, pro příjem malé části dat (údaje o měnách jsou doslova tucet nebo dva znaky) je potřeba přijmout celou stránku, která má minimálně několik desítek kilobajtů. Za druhé, s jakoukoli změnou v kódu stránky, například se změnil design nebo něco jiného, ​​bude muset být přepracován náš algoritmus analýzy. A to bude vyžadovat značné množství zdrojů.

Proto vývojáři dospěli k rozhodnutí - je nutné vyvinout nějaký univerzální mechanismus, který by umožnil transparentní (na úrovni protokolu a přenosového média) a snadnou výměnu dat mezi programy, které mohou být umístěny kdekoli, být napsány v jakémkoli jazyce a spustit pod jakýmkoli operačním systémem a na jakékoli hardwarové platformě. Takový mechanismus se nyní nazývá hlasitými termíny „webové služby“, „SOAP“, „architektura orientovaná na služby“. Pro výměnu dat se používají otevřené a časem prověřené standardy - pro přenos zpráv se používá protokol HTTP (lze však použít i jiné protokoly - např. SMTP). Samotná data (v našem příkladu směnné kurzy) jsou přenášena zabalená v multiplatformním formátu – ve formě XML dokumentů. Pro tento účel byl vynalezen speciální standard – SOAP.

Ano, nyní jsou webové služby, SOAP a XML na rtech, začínají se aktivně implementovat a velké korporace jako IBM a Microsoft uvolňují nové produkty navržené tak, aby napomohly celkové implementaci webových služeb.

Ale! Pro náš příklad se směnnými kurzy, které musí být přenášeny z webových stránek banky do motoru internetového obchodu, bude takové řešení velmi obtížné. Vždyť jen popis standardu SOAP zabírá obscénních jeden a půl tisíce stran, a to není vše. Pro praktické použití se také budete muset naučit pracovat s knihovnami a rozšířeními třetích stran (až od PHP 5.0 obsahuje knihovnu pro práci se SOAP) a napsat stovky a tisíce řádků vlastního kódu. A to vše získat pár písmen a číslic je zjevně velmi těžkopádné a iracionální.

Proto existuje další, dalo by se říci, alternativní standard pro výměnu informací – XML-RPC. Byl vyvinut za účasti společnosti Microsoft společností UserLand Software Inc a je určen pro jednotný přenos dat mezi aplikacemi přes internet. Může nahradit SOAP při budování jednoduchých služeb, kde nejsou potřeba všechny „podnikové“ schopnosti skutečných webových služeb.

Co znamená zkratka XML-RPC? RPC je zkratka pro Remote Procedure Call. To znamená, že aplikace (ať už skript na serveru nebo běžná aplikace na klientském počítači) může transparentně používat metodu, která je fyzicky implementována a spuštěna na jiném počítači. XML je zde použito k poskytnutí univerzálního formátu pro popis přenášených dat. Jako transport se k přenosu zpráv používá protokol HTTP, který umožňuje bezproblémovou výměnu dat prostřednictvím libovolných síťových zařízení – routerů, firewallů, proxy serverů.

K použití tedy potřebujete: XML-RPC server, který poskytuje jednu nebo více metod, XML-RPC klienta, který dokáže vygenerovat správný požadavek a zpracovat odpověď serveru a také znát parametry serveru nutné pro úspěšnou činnost - adresa, název metody a předané parametry.

Veškerá práce s XML-RPC probíhá v režimu „request-response“, což je jeden z rozdílů mezi technologií a standardem SOAP, kde existují jak koncepty transakcí, tak možnost provádět zpožděné hovory (když server uloží žádost a odpoví na ni v určitou dobu v budoucnu). Tyto doplňkové funkce jsou užitečnější pro výkonné podnikové služby, výrazně komplikují vývoj a podporu serverů a kladou další požadavky na vývojáře klientských řešení.

Postup práce s XML-RPC začíná vytvořením požadavku. Typický požadavek vypadá takto:

POST /RPC2 HTTP/1.0
User-Agent: eshop-test/1.1.1 (FreeBSD)
Hostitel: server.localnet.com
Content-Type: text/xml
Délka obsahu: 172



Testovací metoda
Ahoj XML-RPC!


První řádky tvoří standardní hlavičku HTTP POST požadavku. Mezi požadované parametry patří hostitel, datový typ (typ MIME), který musí být text/xml, a délka zprávy. Norma také stanoví, že pole User-Agent musí být vyplněno, ale může obsahovat libovolnou hodnotu.

Následuje obvyklá hlavička XML dokumentu. Kořenový prvek požadavku je , může být pouze jeden a nemůže obsahovat takové uzly jako děti. To znamená, že jeden požadavek může volat pouze jednu metodu na serveru.

Čára Testovací metoda označuje, že voláme metodu s názvem TestMetod. V případě potřeby zde můžete zadat název programu nebo modulu obsahujícího metodu a také cestu k ní. Specifikace XML-RPC, ačkoli ukládá určitá omezení na sadu znaků, které lze použít k označení metody, způsob jejich interpretace zcela závisí na implementaci serveru.

Dále se nastavují přenášené parametry. K tomu slouží tato sekce. Který může obsahovat libovolný počet dílčích prvků Které obsahují parametr popsaný tagem . Na parametry a datové typy se podíváme trochu dále. V naší verzi je metodě předán jeden řetězcový parametr uzavřený ve značce .

Po popisu všech parametrů následují uzavírací značky. Požadavek a odpověď v XML-RPC jsou běžné dokumenty XML, takže všechny značky musí být uzavřeny. V XML-RPC však neexistují žádné jednotlivé značky, ačkoli jsou přítomny ve standardu XML.

Nyní se podívejme na odpověď serveru. Hlavička odpovědi HTTP je normální, pokud je požadavek úspěšně zpracován, server vrátí odpověď HTTP/1.1 200 OK. Stejně jako v požadavku musíte správně zadat typ MIME, délku zprávy a datum generování odpovědi.

Samotné tělo odpovědi je následující:



skutečný


Nyní místo kořenové značky je označena značka , který bezprostředně obsahuje výsledky zpracování požadavku. Bohužel odpověď nepředává název metody, takže byste ji měli uložit na straně klienta, abyste předešli zmatkům, pokud jsou současně volány různé metody.

Pokud při zpracování vašeho požadavku došlo k chybě, místo toho Odpověď bude obsahovat prvek , ve kterém bude vnořena struktura popisující chybu. Popis chyby obsahuje číselný kód chyby a textový popis.

Nyní se krátce podíváme na datové typy v XML-RPC. Datových typů je celkem 9 – sedm jednoduchých typů a 2 komplexní. Každý typ je popsán vlastní značkou nebo sadou značek (u komplexních typů).

Jednoduché typy:

Celá čísla- tag nebo ;

Booleovský typ- tag , může nabývat hodnot 0/1 i true/false;

ASCII řetězec- popsané tagem a může obsahovat libovolný řetězec znaků;

Čísla s pohyblivou řádovou čárkou- tag , může obsahovat i znak čísla, zlomková část je oddělena tečkou;

datum a čas- popsané tagem a musí odpovídat formátu iso8601. Pro další zpracování ve skriptech je tento formát trochu nepohodlný, proto se vždy při odesílání/příjmu požadavku převede. To lze provést speciální funkcí v rámci knihovny, nebo pokud žádná neexistuje, musí vývojář datum převést ručně.

Posledním jednoduchým typem je base64 kódovaný řetězec, který je popsán tagem . Tento typ je univerzální, lze s ním přenášet libovolná data mezi klientem a serverem, i když objem přenášených dat díky takovému kódování narůstá. To je ale důsledek textové povahy protokolu a formátu XML zejména.

Komplexní typy jsou reprezentovány strukturami a poli. Struktura je určena kořenovým prvkem , který může obsahovat libovolný počet prvků , definující každý člen struktury. Člen struktury je popsán dvěma značkami: první, , popisuje jméno člena, za druhé, , obsahuje hodnotu člena (spolu s tagem popisujícím datový typ).

Pole nemají žádná jména a jsou popsána tagem který obsahuje jeden prvek a jeden nebo více podřízených prvků , kde jsou uvedeny konkrétní údaje. Pole může obsahovat jakékoli další typy v libovolném pořadí, stejně jako další pole, což umožňuje popisovat vícerozměrná pole. Můžete také popsat řadu struktur. Ale fakt, že pole nemá jméno, v některých případech komplikuje jeho použití, pro přenos složitých dat je třeba je opakovaně balit do jiných typů (např. pro přenos více polí můžete každé pole zabalit samostatně do struktury a poté z těchto struktur vytvořte jedno pole).

Někdo samozřejmě řekne, že takový seznam datových typů je velmi špatný a „neumožňuje vám rozšíření“. Ano, pokud potřebujete přenášet složité objekty nebo velké množství dat, pak je lepší použít SOAP. A pro malé, nenáročné aplikace se XML-RPC docela hodí, navíc se často i jeho schopnosti ukáží jako přemrštěné! Vzhledem k jednoduchosti nasazení, velkému množství knihoven pro téměř jakýkoli jazyk a platformu a široké podpoře v PHP, pak XML-RPC často prostě nemá konkurenci. I když to nelze hned doporučit jako univerzální řešení – v každém konkrétním případě se musí rozhodnout podle okolností.

Technologie XML-RPC se v systému WordPress používá pro různé pěkné funkce jako jsou pingbacky, trackbacky, vzdálená správa stránek bez přihlášení do admin panelu atd. Útočníci jej bohužel mohou využít k provádění DDoS útoků na webové stránky. To znamená, že vytváříte krásné, zajímavé WP projekty pro sebe nebo na zakázku a zároveň, aniž byste cokoli tušili, můžete být součástí DDoS botnetu. Spojením desítek a stovek tisíc stránek dohromady vytvoří špatní lidé silný útok na svou oběť. I když zároveň trpí i váš web, protože... zátěž jde na hosting, kde se nachází.

Důkaz o takové špatné činnosti může být v protokolech serveru (access.log v nginx), které obsahují následující řádky:

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

Ale vraťme se k zranitelnosti XML-RPC. Vizuálně se to projevuje pomalým otevíráním stránek na vašem serveru nebo nemožností je vůbec načíst (chyba 502 Bad Gateway). Technická podpora mého hostitele FASTVPS potvrdila mé odhady a doporučila:

  1. Aktualizujte WordPress na nejnovější verzi spolu s pluginy. Obecně, pokud se budete řídit, možná jste četli o nutnosti nainstalovat nejnovější verzi 4.2.3. kvůli bezpečnostní kritice (stejně jako předchozí verze). Zkrátka je dobré aktualizovat.
  1. Nainstalujte plugin Zakázat XML-RPC Pingback.

Zakázání XML-RPC ve WordPressu

Dříve se mi zdálo, že možnost povolit/zakázat XML-RPC byla někde v nastavení systému, ale teď ji tam nemůžu najít. Nejjednodušší způsob, jak se toho zbavit, je proto použít příslušný plugin.

Najděte a stáhněte Deaktivovat XML-RPC Pingback nebo jej nainstalujte přímo z panelu správce systému. Nemusíte nic konfigurovat, modul začne fungovat okamžitě. Odstraňuje metody pingback.ping a pingback.extensions.getPingbacks z rozhraní XML-RPC. Navíc odstraňuje X-Pingback z HTTP hlaviček.

V jednom z blogů jsem našel několik dalších možností, jak odstranit zakázání XML-RPC.

1. Zakažte XML-RPC v šabloně.

Chcete-li to provést, přidejte do souboru functions.php motivu následující řádek:

Objednejte Deny, povolte Deny od všech

Osobně jsem poslední dva způsoby nepoužil, protože... Připojil jsem plugin Disable XML-RPC Pingback - myslím, že to bude stačit. Jen pro ty, kteří nemají rádi zbytečné instalace, jsem navrhl alternativní možnosti.

Počínaje sobotním polednem se můj server, kde je hostováno asi 25 webů Wordpress, začal silně zpomalovat. Vzhledem k tomu, že se mi podařilo bez povšimnutí přežít předchozí útoky ( , ), hned jsem nechápal, co se děje.

Když jsem na to přišel, ukázalo se, že hesla byla hrubě vynucená + mnoho požadavků na XMLRPC.

Ve výsledku se nám to všechno podařilo utnout, i když ne hned. Zde jsou tři jednoduché triky, jak se tomu vyhnout.

Tyto techniky pravděpodobně zná každý, ale šlápl jsem na pár chyb, které jsem v popisech nenašel - možná to někomu ušetří čas.

1. Zastavte vyhledávání, nainstalujte plugin Limit Login Attempts - nainstalujte jej, protože jiné ochrany značně zpomalují server, například při použití pluginu Login Security Solution server po půl hodině zemřel, plugin silně zatěžuje databázi .

V nastavení nezapomeňte zaškrtnout políčko „Pro proxy“ - jinak určí IP vašeho serveru pro všechny a automaticky všechny zablokuje.
AKTUALIZACE, děkuji, podrobnosti jsou níže v komentářích - zaškrtněte políčko „Pro proxy“ pouze v případě, že definice nefunguje, když je povoleno „Přímé připojení“

2. Zakázat XML-RPC – plugin Zakázat XML-RPC (je snadné jej aktivovat a je to).

3. Zavřete wp-login.php – pokud na stránky přistupujete přes IP, plugin nefunguje a výběry nadále padají stránky. Chcete-li se tomu vyhnout, přidejte do .htaccess:

Objednejte Deny, povolte Deny od všech

Zkopírujeme soubor wp-login, přejmenujeme ho na jakýkoli divný název, například poletnormalny.php, a uvnitř souboru pomocí autocorrectu změníme všechny nápisy wp-login.php na poletnormalny.php.
To je vše, nyní máte přístup k panelu správce pouze pomocí svého souboru.

Po těchto 3 jednoduchých krocích začaly lokality opět létat a nastal klid.

No, najednou je to zajímavé

Jednou z možností je zjistit, zda na vás někdo neútočí. To lze vidět v protokolech nginx (například zde je cesta k souboru Debian /var/log/nginx access.log).

WordPress měl vždy vestavěný nástroj pro vzdálený přístup k vašemu webu. Někdy se skutečně potřebujete dostat na své stránky, ale váš počítač je daleko od vás. Dlouhou dobu byl řešením soubor s názvem xmlrpc.php. V posledních letech se však tento soubor stal spíše problémem než řešením.

Níže se blíže podíváme na xmlrpc.php a proč byl vytvořen. Podíváme se také na běžné bezpečnostní problémy, které to může způsobit, a na to, jak je na vašem webu WordPress opravit.

XML-RPC je funkce WordPress, která umožňuje přenos dat, přičemž HTTP slouží jako přenos a XML pro kódování. Vzhledem k tomu, že WordPress není uzavřený systém a často komunikuje s jinými systémy, byla nalezena řešení tohoto problému.

Řekněme například, že chcete na svůj web přidávat příspěvky ze svého mobilního telefonu. Musíte použít vzdálený přístup poskytovaný xmlrpc.php.

Hlavní funkcionalitou xmlrpc.php je možnost připojení k webu ze smartphonu, implementace zpětných odkazů a zpětných odkazů z jiných stránek a některé funkce související s pluginem Jetpack.

Proč byl Xmlrpc.php vytvořen a jak byl použit?

Implementace XML-RPC sahá až do počátků WordPressu a ještě předtím, než se WordPress stal WordPressem.

V počátcích internetu byla připojení velmi pomalá a proces nahrávání a publikování na webu byl mnohem obtížnější a časově náročnější. Namísto provádění změn přímo prostřednictvím prohlížeče je většina provedla offline a poté zkopírovala a vložila svůj obsah online. A tento proces nebyl zdaleka ideální.

Řešením (v té době) bylo vytvořit offline blogovacího klienta, kde byste mohli skládat svůj obsah, poté se připojit ke svému blogu a publikovat jej. Toto spojení bylo provedeno pomocí XML-RPC. Díky základní funkcionalitě XML-RPC dávaly rané aplikace využívající tato připojení lidem možnost přistupovat ke svým webům WordPress z jiných zařízení.

XML-RPC dnes

V roce 2008 byla s verzí 2.6 WordPress představena možnost povolit nebo zakázat XML-RPC. S vydáním aplikace WordPress pro iPhone však byla podpora XML-RPC ve výchozím nastavení povolena a neexistovala možnost ji zakázat. Zůstává tak i dnes.

Funkčnost, kterou tento soubor poskytuje, se samozřejmě postupem času výrazně snížila a velikost souboru se zmenšila z 83kb na 3kb, již nehraje takovou roli jako dříve.

Vlastnosti XML-RPC

S novým rozhraním pro programování aplikací WordPress (API) můžeme očekávat, že XML-RPC bude zcela zakázáno. Dnes je toto nové API stále ve fázi testování a lze jej aktivovat pouze pomocí speciálního pluginu.

I když můžete očekávat, že API bude v budoucnu zahrnuto přímo do jádra WordPress, čímž se zcela eliminuje potřeba xmlrpc.php.

Nové API není dokonalé, ale na rozdíl od xmlrpc.php poskytuje dobré a spolehlivé zabezpečení.

Proč deaktivovat Xmlrpc.php

Největším problémem XML-RPC je bezpečnost. Problém přímo nesouvisí s XML-RPC, ale lze jej použít k povolení útoku na váš web.

Samozřejmě se můžete chránit velmi silným heslem a bezpečnostními pluginy WordPress. Ale nejlepším ochranným režimem je jednoduše jej vypnout.

XML-RPC má dvě hlavní slabiny, které byly v minulosti využívány.

První využívá k získání přístupu na váš web útoky hrubou silou. Útočník se pokusí získat přístup na váš web pomocí xmlrpc.php tak, že zkusí různé kombinace uživatelských jmen a hesel. Mohou efektivně používat jeden příkaz k testování stovek různých hesel. To jim umožňuje obejít bezpečnostní nástroje, které by normálně detekovaly a blokovaly útoky hrubou silou.

Druhým je uvedení webu do režimu offline prostřednictvím útoku DDoS. Hackeři využijí zpětné upozornění ve WordPressu k jeho odeslání na tisíce webů současně. Tato funkce xmlrpc.php poskytuje hackerům téměř nekonečný počet IP adres pro šíření DDoS útoku.

Chcete-li zkontrolovat, zda XML-RPC na vašem webu funguje, můžete jej spustit pomocí nástroje s názvem XML-RPC Validator. Spusťte svůj web pomocí tohoto nástroje a pokud se zobrazí chyba, znamená to, že nemáte podporu XML-RPC.

Pokud obdržíte zprávu o úspěchu, můžete zastavit xmlrpc.php jedním ze dvou níže uvedených způsobů.

Metoda 1: Zakažte Xmlrpc.php pomocí pluginu

Zakázání XML-RPC na vašem webu WordPress je neuvěřitelně snadné.

Přejděte do sekce Pluginy › Přidat nové ve vaší administrátorské konzoli WordPress. Najděte plugin Zakázat XML-RPC a nainstalujte jej, vypadá to jako na obrázku níže:

Aktivujte plugin a máte hotovo. Tento plugin automaticky vloží potřebný kód pro deaktivaci XML-RPC.

Pamatujte však, že nainstalované pluginy mohou používat části XML-RPC a pak jeho zakázání může způsobit konflikt mezi pluginy nebo jejich jednotlivými částmi a vyřadit je z pracovního režimu.

Pokud chcete deaktivovat pouze jednotlivé prvky XML-RPC, ale povolit fungování jiných pluginů a funkcí, podívejte se na pluginy, jako jsou tyto:

  • Zastavte útok XML-RPC. Tento plugin zastaví všechny útoky XML-RPC, ale umožní pluginům jako Jetpack a dalším automatizovaným nástrojům a pluginům pokračovat v běhu tím, že jim umožní přístup k souborům xmlrpc.php.
  • Řízení XML-RPC Publishing. To vám umožní spravovat a publikovat na dálku.

Metoda 2: Ručně deaktivujte Xmlrpc.php

Pokud nechcete používat plugin a dáváte přednost ručnímu použití, postupujte takto. Zastaví všechny příchozí požadavky xmlrpc.php, než budou předány WordPressu.

Otevřete soubor .htaccess. Možná budete muset povolit 'zobrazovat skryté soubory' ve správci souborů nebo FTP klientovi, abyste tento soubor našli.

Vložte tento kód do souboru .htaccess:

# Blokujte požadavky WordPress xmlrpc.php objednávka odepřít, povolit odepřít od všech povolit od 123.123.123.123

Závěrečné myšlenky

Celkově bylo XML-RPC solidním řešením některých problémů, které přicházely se vzdáleným publikováním na vašem webu WordPress. Zároveň se však objevily některé bezpečnostní díry, které se pro některé majitele WordPress webů ukázaly jako docela nebezpečné.

Aby byl váš web bezpečný, doporučuje se úplně zakázat xmlrpc.php, pokud nepotřebujete některé funkce vyžadované vzdáleným publikováním a zásuvným modulem Jetpack. Poté můžete použít zásuvné moduly, které vám umožní používat tyto funkce při opravě bezpečnostních děr.

V průběhu času můžeme očekávat, že se funkce XML-RPC začlení do nového WordPress API, které bude podporovat vzdálený přístup bez obětování zabezpečení.

Zablokovali jste přístup k XML-RPC pomocí pluginu nebo ručně? Nebo byly nějaké bezpečnostní problémy, protože byl dříve aktivní? Podělte se o své zkušenosti v komentářích níže.