SilentShield
← Powrót do bloga
WydanieAJAXOpenCart

SilentShield 2.6: formularze wysyłane kliknięciem i przez AJAX są teraz sprawdzane

Marc Wagner·8 października 2026·3 min czytania

SilentShield 2.6 zamyka lukę, która kosztowała jeden sklep rejestracje w kasie: formularze wysyłane kliknięciem przycisku i przez AJAX zamiast zwykłego submit nie były do nas zgłaszane. Ten artykuł wyjaśnia, co się stało, co się zmienia i co należy zrobić. Pełna lista znajduje się w changelogu.

Co poszło nie tak

Widżet mierzy pisanie i ruchy myszy i zgłasza wynik, gdy odwiedzający wysyła formularz. Nasłuchiwał zdarzenia submit przeglądarki. Niektóre sklepy nigdy nie wywołują tego zdarzenia. Kasa OpenCart 3 ładuje na przykład krok rejestracji przez AJAX i wysyła go zwykłym przyciskiem oraz jQuery.ajax.

Skutek: Państwa serwer pytał /v1/verify o odwiedzającego, dla którego otrzymaliśmy tylko pierwsze zdarzenie strony. Bez danych o pisaniu i ruchach myszy werdykt brzmiał „suspicious”, a rejestracja prawdziwej osoby kończyła się błędem. Formularz był chroniony, ale ochrona nie widziała odwiedzającego.

Co się zmienia

W wersji 2.6 widżet rozpoznaje także tego rodzaju wysłanie. Sprawdza żądanie, które zawiera behavior_nonce. Jeśli takie żądanie opuszcza stronę bez zdarzenia submit, a formularz nie został jeszcze sprawdzony, widżet wstrzymuje je na chwilę, zgłasza wysłanie wraz ze zebranymi danymi o pisaniu i ruchach myszy i wysyła żądanie dopiero po otrzymaniu werdyktu. Jeśli odpowiedź nie nadejdzie w ciągu 15 sekund, żądanie i tak zostaje wysłane, a decyzję podejmuje Państwa serwer, jak dotychczas.

Wszystko inne pozostaje bez zmian: formularze ze zwykłym submit, żądania bez nonce i zwykłe wysłania strony nie są dotykane.

Jak to przetestowaliśmy

Odtworzyliśmy kasę OpenCart w naszym lokalnym środowisku testowym z prawdziwym jQuery i pozwoliliśmy symulowanemu serwerowi klienta wywołać /v1/verify. Przy wyłączonym przełączniku formularz wysyłany kliknięciem i przez AJAX był odrzucany (HTTP 403, „suspicious”, powody NO_TYPING_PAUSES i NO_MOUSE_MOVEMENT). Przy włączonym przełączniku ten sam odwiedzający został zaakceptowany (HTTP 200, „human”). Formularz ze zwykłym submit, zwykłe wysłanie strony i żądanie bez nonce zachowywały się tak samo przy włączonym i wyłączonym przełączniku.

Co warto wiedzieć

  • Obejmuje żądania wykonywane przez XMLHttpRequest, w tym jQuery.ajax. Formularze wysyłane przez fetch() nie są jeszcze objęte, z wyjątkiem kasy blokowej WooCommerce, która ma własną obsługę.
  • Państwa kontrola po stronie serwera się nie zmienia. Proszę nadal wywoływać /v1/verify z nonce.

Przewodnik integracji

Gotowy porzucić CAPTCHA?

Ochrona Państwa formularzy — niewidocznie. Bez karty kredytowej.