SilentShield
← Zpět na blog
VydáníAJAXOpenCart

SilentShield 2.6: formuláře odeslané kliknutím a přes AJAX se nyní kontrolují

Marc Wagner·8. října 2026·3 min čtení

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 i jQuery.ajax. Formuláře odeslané přes fetch() 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/verify s nonce.

Průvodce integrací

Připraveni zbavit se CAPTCHA?

Začněte chránit své formuláře — neviditelně. Není potřeba platební karta.