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
TIP#2592: Ještě stále máte na webu Google AMP? Je to zlo, rychle s tím pryč
Je to vlastně už docela dlouho, co jsem na všech mých webech zrušil podporu Google AMP. Pak jsem delší dobu chtěl napsat tip tomu věnovaný, ale nějak to zapadlo v záplavě jiných tipů.…
TIP#2554: Potřebujete vyměnit obrázek v médiích na vašem WordPressu? Je nutné mít plugin
Jedna z věcí, kterou (neznámo proč) WordPress neumí přímo. Můžete nahrát média (obrázek, fotku, atd) ale když chcete nahrát upravenou verzi, tak to není možné. Přitom je to dost zásadní věc, kterou budete…
TIP#2548: Jak synchronizovat (zálohovat) web přístupný přes FTP na disk ve Windows?
Taková ta úplně klasická věc. Máte někde webový server (třeba právě jako 365tipu.cz) a je dostupný jen přes FTP (SFTP). Chcete si ho zálohovat na disk ve Windows (ať už lokální nebo místní…
TIP#2533: Jak získat štítky z WordPressu pomocí vlastního PHP
Když už byla řeč o tom jak analyzovat duplicitní štítky, tak je vhodné ještě přidat možnost jak exportovat štítky z WordPressu pomocí PHP. Předpokládá to, že máte přístup k vašemu hostingu a můžete…
TIP#2528: Jak ve WordPressu vyhledat duplicitní štítky? AI a Python pomůže
Štítky ve WordPressu jsou tak trochu peklo. Nejen že je třeba je udržovat tak abyste neměli zbytečné štítky (takové co mají žádné nebo minimum článků), ale velmi snadno vznikají různorodé “duplicity”. Hlavně tak…
TIP#2514: Jak ve WordPressu deaktivovat plugin bez přístupu k WP-Admin
Tohle je snadné, ale musíte mít přístup k vašemu hostingu, tedy většinou FTP/SFTP přístup, ale může to být SSH. Prostě tak, abyste se dostali k souborům. (Pokračování textu…)
TIP#2512: Jak z WordPress blogu udělat sledovatelný ActivityPub feed
Automattic před pár týdny vypustil betu ActivityPub pluginu a na počátku září přišla “ostrá” první verze. Použití je přitom snadné a z vašeho blogu/webu na WordPressu vytvoří ActivityPub feed – ten mohou sledovat…
TIP#2505: Uklízíte v databázi ve vašem WordPressu? Co dělat s oEmbed Cache In Post Meta
Jedna maličkost, kterou nejspíš neznáte – kdykoliv do příspěvků umístíte nějaký ten “embedovaný” obsah, tedy například video na YouTube, tak editor stáhne potřebný kód pro embed a uloží do “oEmbed Cache” pro další…
TIP#2500: Otevírat odkazy v novém okně (záložce) či neotevírat?
Otevření odkazu v novém okně či záložce je běžná praxe na mnoha webových stránkách. Ale je to vždy správný krok? Jaká jsou rizika a výhody obou přístupů? (Pokračování textu…)
TIP#2497: Uklízíte v databázi ve vašem WordPressu? Kolik revizí příspěvků tam máte schovaných?
Typická věc vhodná k úklidu jsou revize. Každá změna v příspěvku/stránce totiž uchovává předchozí verzi. A pokud hodně opravujete, ale třeba i postupně píšete, tak těch revizí může být docela dost a mohou…