Co je XML-RPC, proč a jak ho ve WordPressu vypnout

Co je XML-RPC a proč to chcete vypnout

RPC je zkratka pro Remote Procedure Call = vzdálené volání procedur. Mohlo by se hodit pro komunikaci mezi servery, nebo aplikací a wordpressem, jenže se s hodit nejspíš nebude. XML-RPC je staré, už dávno se nevyvíjí a používá se málo. WordPress je vyhlášený svojí zpětnou kompatibilitou, takže tenhle dinosaurus z kódu nezmizel. WordPress má mnohem modernější REST API, které umí víc a používá se naopak často.

XML-RPC využívají často hackeři pro DOS útoky. Snaží se přes něj posílat na Váš WordPress obří množství dotazů, dokud chudák nepadne. A i když to ustojí, odbavování hromady zbytečných požadavků brzdí web pro normální návštěvníky.

Pro úplnost uvedu, že DOS útoky většinou používají tzv. pingback a návod k tomu je tady: https://codex.wordpress.org/XML-RPC_Pingback_API
Všimněte si, že je to ve WordPressu od verze 1.5. Onu zranitelnost popsalo v roce 2015 Sucuri.

Jak vypnout XML-RPC

Nejjednodušší je do wp-config.php přidat úplně nakonec tohle:

add_filter('xmlrpc_enabled', '__return_false');

Přeloženo do češtiny: „Na otázku jestli je xml-rpc zapnuté odpověz ne.“

Je nutné to dát na konec souboru, za tenhle řádek:

require_once(ABSPATH . 'wp-settings.php');

Předtím není funkce add_filter() definovaná a uděláte si error.

Blokování XML-RPC pomocí .htaccess

Volání XML-RPC je možné blokovat i pomocí souboru .htaccess (tečka na začátku názvu není překlep):

<Files xmlrpc.php>
order deny,allow
deny from all
</Files>

Soubor .htaccess najdete v kořenovém adresáři webu, stejně jako wp-config.php. .htaccess používá server (Apache) a dotaz na xml-rpc se zablokuje dřív, než se vůbec k wordpressu dostane. Teoreticky je to z pohledu provozu rychlejší. V běžné praxi u normálního webu je to jedno.

Pro vypnutí XML-RPC můžete použít i plugin, existuje jich několik. Ale proč instalovat další plugin, když stačí jeden řádek v konfiguráku?

Pokud použáváte JetPack, XML-RPC nevypínejte

Plugin JetPack používá XML-RPC, proto ho nevypínejte. Místo toho v JetPacku použijte modul Protect. Ten blokuje pingback útoky a nechá u toho XML-RPC zapnuté.

Existuje ještě několik dalších pluginů, které XML-RPC používají. Po vypnutí XML-RPC si proto zkontrolujte, že všechno funguje jak má.

Podobné příspěvky