Jak a proč zakázat REST API ve WordPressu 4.7+

Jedna z velkých novinek na WordPressu je v poslední době REST API. Dříve formou volitelného pluginu, nyní od verze 4.7 jako součást jádra. Určitě dobrá věc, nicméně realizace poměrně pokulhává. Vadí mi především to, že na každém webu je možné volat routy z REST API a ty vracejí data v JSONu, jako by se nechumelilo.

Masivní únorovou infekcí WordPress webů pro rok 2017 se velmi detailně zabýval Vláďa Smitka a zkráceně řečeno, je třeba aktualizovat na WordPress 4.7.2.

Nicméně dále zůstává problém např. s výpisem uživatelů. Nemyslím si, že je dobré, když kdokoliv na vašem webu s WordPresem na verzi 4.7.x zadá URL {VAŠE-URL}/wp-json/wp/v2/users a vypíše se mu seznam všech uživatelů včetně URL a slugů.

Problém je to z mnoha důvodů. Ať už proto, že případným narušitelům velmi zjednodušíte práci. A také proto, že nepotřebujete, nebo nechcete, aby někdo viděl, jaké uživatelské účty ve svém WordPressu máte atp.

Jedno z řešení opět připravil Vláďa Smitka v podobě jednoduchého filtru na Gistu, který si můžete integrovat do své šablony. To je ale řešení především pro tvůrce webů. Pro správce či majitele bude nejjednodušší varianta stáhnout a aplikovat plugin, který tento problém řeší.

Za sebe mohu doporučit kompletní zakázání REST API ve WordPressu. Např. plugin Disable REST API, anebo pokud používáte např. iThemes Security, tak stačí upravit nastavení – WordPress Tweaks – REST API. Pokud ho nepoužívá vaše šablona, což bude zatím většina případů. Minimálně do té doby, než se v jádře vyřeší na dostatečné a bezpečné úrovni celý kód – prostě než si to sedne. Anebo dokud ho nezačnete používat (opět rozuměj vaše šablona), ale to už by měl vyřešit dodavatel technického řešení, na což můžete zkusit třeba nás :)