SilentShield
← Grįžti į tinklaraštį
LeidimasAJAXOpenCart

SilentShield 2.6: paspaudimu ir per AJAX siunčiamos formos dabar tikrinamos

Marc Wagner·2026 m. spalio 8 d.·3 min. skaitymo

SilentShield 2.6 užtaiso spragą, dėl kurios viena parduotuvė prarado registracijas atsiskaitymo metu: formos, siunčiamos mygtuko paspaudimu ir per AJAX, o ne įprastu submit, mums nebuvo pranešamos. Šiame straipsnyje paaiškinama, kas nutiko, kas keičiasi ir ką jums reikia daryti. Visas sąrašas pateiktas pakeitimų žurnale.

Kas nutiko

Valdiklis matuoja spausdinimą ir pelės judesius ir praneša rezultatą, kai lankytojas siunčia formą. Jis klausėsi naršyklės įvykio submit. Kai kurios parduotuvės šio įvykio niekada nesukelia. Pavyzdžiui, OpenCart 3 atsiskaitymas registracijos žingsnį įkelia per AJAX ir siunčia jį paprastu mygtuku bei jQuery.ajax.

Rezultatas: jūsų serveris per /v1/verify teiravosi apie lankytoją, apie kurį mes buvome gavę tik pirmąjį puslapio įvykį. Be spausdinimo ir pelės duomenų verdiktas buvo „įtartinas“, ir tikro žmogaus registracija nepavyko. Forma buvo apsaugota, bet apsauga lankytojo nematė.

Kas keičiasi

Su 2.6 versija valdiklis atpažįsta ir tokį siuntimą. Jis stebi užklausą, kuri neša behavior_nonce. Jei ta užklausa palieka puslapį be submit įvykio, o forma dar nebuvo patikrinta, valdiklis trumpam ją sulaiko, praneša apie siuntimą kartu su surinktais spausdinimo ir pelės duomenimis ir išsiunčia užklausą, kai gaunamas verdiktas. Jei per 15 sekundžių atsakymo nėra, užklausa vis tiek išsiunčiama, o sprendžia jūsų serveris, kaip ir anksčiau.

Visa kita lieka kaip buvo: formos su įprastu submit, užklausos be nonce ir paprasti puslapio siuntimai neliečiami.

Kaip tai išbandėme

Vietinėje bandymų aplinkoje atkūrėme OpenCart atsiskaitymą su tikru jQuery ir leidome imituojamam kliento serveriui kviesti /v1/verify. Kai jungiklis buvo išjungtas, paspaudimu ir per AJAX siunčiama forma buvo atmesta (HTTP 403, „įtartinas“, priežastys NO_TYPING_PAUSES ir NO_MOUSE_MOVEMENT). Kai jungiklis įjungtas, tas pats lankytojas buvo priimtas (HTTP 200, „žmogus“). Forma su įprastu submit, paprastas puslapio siuntimas ir užklausa be nonce veikė vienodai su įjungtu ir išjungtu jungikliu.

Ką verta žinoti

  • Jis apima užklausas, atliekamas per XMLHttpRequest, įskaitant jQuery.ajax. Formos, siunčiamos per fetch(), kol kas neapimamos, išskyrus WooCommerce bloko atsiskaitymą, kuris turi savo apdorojimą.
  • Jūsų serverio pusės patikra nesikeičia. Toliau kvieskite /v1/verify su nonce.

Integravimo vadovas

Pasiruošę atsikratyti CAPTCHA?

Pradėkite apsaugoti savo formas — nematomai. Kredito kortelės nereikia.