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á.