SilentShield 2.6 uzavírá mezeru, která jeden obchod stála registrace v pokladně: formuláře odeslané kliknutím na tlačítko a přes AJAX místo běžného submitu nám nebyly hlášeny. Tento článek vysvětluje, co se stalo, co se mění a co musíte udělat. Úplný seznam najdete v changelogu.
Co se pokazilo
Widget měří psaní a pohyb myši a výsledek hlásí, když návštěvník odešle formulář. K tomu naslouchal události submit prohlížeče. Některé obchody tuto událost nikdy nespustí. Pokladna OpenCart 3 například načítá krok registrace přes AJAX a odesílá ho obyčejným tlačítkem a jQuery.ajax.
Důsledek: váš server se ptal na /v1/verify na návštěvníka, o němž jsme měli jen první událost stránky. Bez dat o psaní a myši byl verdikt „suspicious“ a registrace selhala u skutečného člověka. Formulář byl chráněn, ale ochrana návštěvníka neviděla.
Co se mění
Ve verzi 2.6 widget rozpozná i tento druh odeslání. Sleduje požadavek, který nese behavior_nonce. Pokud tento požadavek opouští stránku bez události submit a formulář ještě nebyl zkontrolován, widget ho na okamžik zadrží, nahlásí odeslání se shromážděnými daty o psaní a myši a požadavek odešle, jakmile je verdikt k dispozici. Pokud do 15 sekund nepřijde odpověď, požadavek se přesto odešle a váš server rozhodne jako dosud.
Vše ostatní zůstává, jak bylo: formuláře s běžným submitem, požadavky bez nonce a prosté odeslání stránky se nemění.
Jak jsme to testovali
Pokladnu OpenCart jsme v našem lokálním testovacím prostředí znovu postavili se skutečným jQuery a nechali simulovaný server zákazníka volat /v1/verify. Při vypnutém přepínači byl formulář odeslaný kliknutím a přes AJAX odmítnut (HTTP 403, „suspicious“, důvody NO_TYPING_PAUSES a NO_MOUSE_MOVEMENT). Při zapnutém přepínači byl stejný návštěvník přijat (HTTP 200, „human“). Formulář s běžným submitem, prosté odeslání stránky a požadavek bez nonce se choval stejně se zapnutým i vypnutým přepínačem.
Co byste měli vědět
- Pokrývá požadavky odeslané přes
XMLHttpRequest, tedy ijQuery.ajax. Formuláře odeslané přesfetch()zatím pokryty nejsou, kromě blokové pokladny WooCommerce, která má vlastní řešení. - Vaše kontrola na serveru se nemění. Dál volejte
/v1/verifys nonce.