SilentShield
← Назад към блога
ИзданиеAJAXOpenCart

SilentShield 2.6: формулярите, изпратени с клик и AJAX, вече се проверяват

Marc Wagner·8 октомври 2026 г.·3 мин четене

SilentShield 2.6 затваря пропуск, който струваше на един магазин регистрациите при плащане: формулярите, изпратени с клик върху бутон и AJAX вместо с обикновено изпращане, не ни се отчитаха. Тази статия обяснява какво се случи, какво се променя и какво трябва да направите. Пълният списък е в списъка с промените.

Какво се обърка

Уиджетът измерва писането и движението на мишката и отчита резултата, когато посетител изпраща формуляр. За целта слушаше събитието submit на браузъра. Някои магазини никога не задействат това събитие. Плащането в OpenCart 3 например зарежда стъпката за регистрация чрез AJAX и я изпраща с обикновен бутон и jQuery.ajax.

Резултатът: вашият сървър питаше /v1/verify за посетител, за когото бяхме получили само първото събитие на страницата. Без данни за писането и мишката решението беше „suspicious“ и регистрацията се провали за истински човек. Формулярът беше защитен, но защитата не можеше да види посетителя.

Какво се променя

С версия 2.6 уиджетът разпознава и този вид изпращане. Той следи заявката, която носи behavior_nonce. Ако тази заявка напуска страницата без събитие submit и формулярът още не е проверен, уиджетът я задържа за момент, отчита изпращането със събраните данни за писането и мишката и изпраща заявката, щом решението е налице. Ако в рамките на 15 секунди не дойде отговор, заявката все пак се изпраща и вашият сървър решава, както досега.

Всичко останало си остава както преди: формулярите с обикновено изпращане, заявките без nonce и простите изпращания на страница не се засягат.

Как го тествахме

Пресъздадохме плащането в OpenCart в нашата локална тестова среда с истински jQuery и оставихме симулиран сървър на клиент да извика /v1/verify. При изключен превключвател формулярът с клик и AJAX беше отхвърлен (HTTP 403, „suspicious“, причини NO_TYPING_PAUSES и NO_MOUSE_MOVEMENT). При включен превключвател същият посетител беше приет (HTTP 200, „human“). Формуляр с обикновено изпращане, просто изпращане на страница и заявка без nonce се държаха еднакво при включен и изключен превключвател.

Какво е добре да знаете

  • Той обхваща заявки, направени с XMLHttpRequest, което включва jQuery.ajax. Формуляри, изпратени с fetch(), засега не са обхванати, освен блоковото плащане на WooCommerce, което има собствена обработка.
  • Вашата проверка на сървъра не се променя. Продължавайте да извиквате /v1/verify с nonce.

Ръководство за интеграция

Готови ли сте да се отървете от CAPTCHA?

Започнете да защитавате формулярите си — невидимо. Не е необходима кредитна карта.