SilentShield
← Vissza a Bloghoz
KiadásAJAXOpenCart

SilentShield 2.6: a kattintással és AJAX-szal küldött űrlapokat is ellenőrizzük

Marc Wagner·2026. október 8.·3 perc olvasás

A SilentShield 2.6 lezár egy hiányosságot, amely egy webshopnak a pénztári regisztrációkba került: azokat az űrlapokat, amelyeket rendes submit helyett gombkattintással és AJAX-szal küldenek, nem jelentették nekünk. Ez a cikk elmagyarázza, mi történt, mi változik, és mit kell tennie. A teljes lista a changelogban olvasható.

Mi romlott el

A widget méri a gépelést és az egérmozgást, és az eredményt akkor jelenti, amikor a látogató elküld egy űrlapot. A böngésző submit eseményét figyelte. Egyes webshopok ezt az eseményt soha nem váltják ki. Az OpenCart 3 pénztára például AJAX-szal tölti be a regisztrációs lépést, és egyszerű gombbal és jQuery.ajax-szal küldi el.

Az eredmény: a szerver a /v1/verify végponton olyan látogatóról kérdezett, akiről csak az első oldalesemény érkezett meg hozzánk. Gépelési és egéradatok nélkül a döntés „suspicious” volt, és a regisztráció egy valódi embernél meghiúsult. Az űrlap védett volt, de a védelem nem látta a látogatót.

Mi változik

A 2.6-os verzióval a widget az ilyen beküldést is felismeri. A behavior_nonce-ot hordozó kérést vizsgálja. Ha ez a kérés submit esemény nélkül hagyja el az oldalt, és az űrlapot még nem ellenőrizték, a widget egy pillanatra visszatartja, jelenti a beküldést az összegyűjtött gépelési és egéradatokkal, majd a döntés megérkezése után elküldi a kérést. Ha 15 másodpercen belül nem érkezik válasz, a kérés mégis elmegy, és a szerver dönt, mint korábban.

Minden más változatlan marad: a rendes submittal küldött űrlapokhoz, a nonce nélküli kérésekhez és az egyszerű oldalbeküldésekhez nem nyúlunk.

Hogyan teszteltük

Az OpenCart pénztárat a helyi tesztkörnyezetünkben valódi jQuery-vel újraépítettük, és egy szimulált ügyfélszerverrel hívattuk a /v1/verify végpontot. Kikapcsolt kapcsolóval a kattintással és AJAX-szal küldött űrlapot elutasították (HTTP 403, „suspicious”, okok: NO_TYPING_PAUSES és NO_MOUSE_MOVEMENT). Bekapcsolt kapcsolóval ugyanezt a látogatót elfogadták (HTTP 200, „human”). A rendes submittal küldött űrlap, az egyszerű oldalbeküldés és a nonce nélküli kérés ugyanúgy viselkedett be- és kikapcsolt kapcsolóval.

Tudnivalók

  • Az XMLHttpRequest-tel indított kéréseket fedi le, ide tartozik a jQuery.ajax is. A fetch()-csel küldött űrlapokat még nem, kivéve a WooCommerce blokkos pénztárát, amelynek saját kezelése van.
  • A szerveroldali ellenőrzése nem változik. Továbbra is a nonce-szal hívja a /v1/verify végpontot.

Integrációs útmutató

Készen áll megszabadulni a CAPTCHA-tól?

Kezdje el láthatatlanul védeni az űrlapjait. Nincs szükség bankkártyára.