TIP#2115: WordPress a XMLRPC? Proč nefunguje aplikace? Je XMLRPC bezpečné? Mám ho zakázat?

Ve většině případů na XMLRPC u WordPressu nenarazíte – zpravidla poprvé v okamžiku, kdy budete chtít zprovoznit mobilní aplikaci a ta se odmítne připojit a jako důvod uvede chybu 403 a zkratku XMLRPC. 

XMLRPC je protokol umožňující napojení na web na WordPressu a přes API poté s webem pracovat – vkládat, opravovat, mazat články, stránky, média, komentáře, šablony, uživatele, pluginy a nastavení webu (detailně v XML-RPC WordPress API).

Zpravidla se to používá přes mobilní aplikaci či desktopového klienta  (viz například Proč je dobré mít na tabletu (či mobilu) aplikaci od WordPressu?) ale má řadu dalších možností využití.

XMLRPC je na WordPress.com automaticky funkční, ale pokud budete mít vlastní hosting, tak může být zakázáno pravidly v .htacess (ale o tom až dále) nebo jinak blokováno vaším hostingem (ale o tom také až dále). Už pár let není v nastavení WordPressu možnost zapnout/vypnout, jak tomu bylo dříve. 

Je XMLRPC bezpečné? 

XMLRPC je tak bezpečné, jak jsou bezpečná hesla uživatelů, kteří by se mohli přes XMLRPC přihlásit. Je to stejné přihlášení, jako když se přihlašují přes web, takže v tom není rozdíl. Tedy až na to, že na XMLRPC nemůžete přidat dvoufaktorové ověření, kterým můžete chránit přihlášení klasické.  A je nutné mít jistotu, že nikde není používáno bez https.

Před lety bylo XMLRPC děravé, takže se mohlo stát nástrojem útoku, ale totéž je pravda o celém WordPressu, pluginech či šablonách. Vždy se může objevit bezpečnostní chyba. 

Máte XMLRPC povolené a přemýšlíte nad zákazem? Klidně můžete (přes .htaccess nebo pluginem, viz dále), zlepší to bezpečnost (odstraněním jedné možné cesty jak dovnitř). Ale žádný extra zásadní důvod k tomu není, byť o kousek dál u pingback je něco k zvážení.

Jedna z nevýhod XML RPC oproti novějšímu REST API ale zůstává – přihlášení je klasicky jménem a heslem (REST API používá bezpečný OAuth) a snadno se tak dá zneužívat pro brute force útoky

Konečné doporučení tedy je – pokud XMLRPC nepotřebujete nutně, tak ho mějte zakázané. Sice tím přijdete o možnost používat aplikaci WordPressu, ale nic vám nebrání přistupovat klasicky přes web – funguje to velmi dobře.

K čemu XMLRPC slouží?

K výše uvedenému použití v aplikacích WordPressu – mobilní i desktopové. Pokud nic z toho neplánujete používat, tak nemusíte XMLRPC mít povolené. 

JetPack plugin používá XMLRPC pro některé pokročilejší funkce, ale žádná z nich není v neplacené podobě – bude dobře fungovat i bez XMLRPC. Navíc by JetPack měl snad už přejít na REST API. 

Pro pingback/trackback funkčnost mezi vaším webem a dalšími blogovacími platformami. Co navíc, tuhle funkčnost rozhodně nechcete mít povolenou (slouží k přidávání komentářů). Zakázat samostatně pingbacky můžete přes plugin Disable XML-RPC Pingback plugin 

Právě pingback funkčnost se ale (přes XMLRPC) používá pro DDoS – snadno se tím zahlcuje server, bez ohledu na to, jestli se výsledný pingback někam ukládá.

TIP: Bezpečnostní pluginy, jako například WordFence, umí pracovat i s útoky na XMLRPC. Takže vůbec neváhejte si je pořídit 

Jak XMLRPC zakázat

Nejjednodušší způsob zákazu XMLRPC je .htaccess (v rootu vašeho webu) a něm následující

# START XML RPC BLOCKING
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
# FINISH XML RPC BLOCKING

Uvedené zakáže kompletně přístup k xmlrpc.php – pokud byste chtěli, můžete upravit povolením z určitých (vašich, bezpečných) IP adres.

Pokud nemůžete opravovat/vytvářet .htaccess můžete využít plugin Disable XML-RPC plugin – nainstalujte a aktivujte pro zákaz, deaktivuje pro povolení. 

Případně pokročilejší  REST XML-RPC Data Checker plugin kde je možnost zakazovat a povolovat i další věci či různé funkčnosti (včetně pingbacků). Chcete-li něco opravdu užitečného a pokročilejšího, tak toto je ta lepší varianta. 

Pokud si WordPress sami programujete, tak je dobré vědět, že XMLRPC je možné zakázat následujícím filtrem:

add_filter( 'xmlrpc_enabled', '__return_false' );

Což mimo jiné znamená i to, že vaše šablona může mít možnost povolení/zakázání XMLRPC. Ale nebývá to časté. 

XMLRPC je navíc možné zakazovat v konfiguracích HTTP serverů – a to váš hosting mohl udělat za vás.  V případně nefunkčnosti tedy ověřujte i tam.

Jak ověřit, jestli mám XMLRPC funkční? 

Snadno, zkuste otevřít vášserver/xmlrpc.php – pokud vrátí 403 nebo nějakou jinou chybu (například “Missing index page or access denied!”), tak je XMLRPC zakázané. Pokud vrátí XMLR-PRC server accepts POST request only, tak je XMLRPC povolené. 

Nezapomeňte, že do XMLRPC se může “míchat” i některý z bezpečnostních pluginů – WordFence má například v nastavení i věci týkající se právě XMLRPC.

Další tipy ve kterých zjistíte jak na WordPress

Načítání…

Something went wrong. Please refresh the page and/or try again.