SilentShield
← Takaisin blogiin
JulkaisuAJAXOpenCart

SilentShield 2.6: napsautuksella ja AJAXilla lähetettävät lomakkeet tarkistetaan nyt

Marc Wagner·8. lokakuuta 2026·3 min lukuaika

SilentShield 2.6 korjaa aukon, joka maksoi yhdelle verkkokaupalle kassan rekisteröitymiset: lomakkeita, jotka lähetetään tavallisen submitin sijaan painikkeen napsautuksella ja AJAXilla, ei ilmoitettu meille. Tässä artikkelissa kerrotaan, mitä tapahtui, mitä muuttuu ja mitä teidän on tehtävä. Täydellinen luettelo löytyy muutoslokista.

Mikä meni pieleen

Widget mittaa kirjoittamista ja hiiren liikettä ja ilmoittaa tuloksen, kun kävijä lähettää lomakkeen. Se kuunteli selaimen submit-tapahtumaa. Joissakin verkkokaupoissa tätä tapahtumaa ei koskaan laukaista. OpenCart 3:n kassa esimerkiksi lataa rekisteröitymisvaiheen AJAXilla ja lähettää sen tavallisella painikkeella ja jQuery.ajaxilla.

Tulos: palvelimenne kysyi /v1/verify-rajapinnalta kävijästä, josta meillä oli vain ensimmäinen sivutapahtuma. Ilman kirjoitus- ja hiiritietoja tuomio oli ”epäilyttävä”, ja rekisteröityminen epäonnistui oikealta ihmiseltä. Lomake oli suojattu, mutta suojaus ei nähnyt kävijää.

Mitä muuttuu

Versiosta 2.6 alkaen widget tunnistaa myös tällaisen lähetyksen. Se tarkastelee pyyntöä, joka kuljettaa behavior_nonce-arvon. Jos pyyntö lähtee sivulta ilman submit-tapahtumaa eikä lomaketta ole vielä tarkistettu, widget pidättää sitä hetken, ilmoittaa lähetyksen kerättyjen kirjoitus- ja hiiritietojen kanssa ja lähettää pyynnön, kun tuomio on saatu. Jos vastausta ei tule 15 sekunnin kuluessa, pyyntö lähetetään silti ja palvelimenne päättää kuten ennenkin.

Kaikki muu pysyy ennallaan: tavallisella submitilla lähetettäviin lomakkeisiin, pyyntöihin ilman noncea ja pelkkiin sivun lähetyksiin ei kosketa.

Miten testasimme sen

Rakensimme OpenCartin kassan uudelleen paikalliseen testiympäristöömme oikealla jQuerylla ja annoimme simuloidun asiakaspalvelimen kutsua /v1/verify-rajapintaa. Kytkimen ollessa pois päältä napsautuksella ja AJAXilla lähetetty lomake hylättiin (HTTP 403, ”epäilyttävä”, syyt NO_TYPING_PAUSES ja NO_MOUSE_MOVEMENT). Kytkimen ollessa päällä sama kävijä hyväksyttiin (HTTP 200, ”ihminen”). Tavallisella submitilla lähetetty lomake, pelkkä sivun lähetys ja pyyntö ilman noncea toimivat samoin kytkin päällä ja pois päältä.

Hyvä tietää

  • Se kattaa XMLHttpRequestilla tehdyt pyynnöt, mukaan lukien jQuery.ajax. fetch()illa lähetettäviä lomakkeita se ei vielä kata, lukuun ottamatta WooCommercen lohkokassaa, jolla on oma käsittelynsä.
  • Palvelinpuolen tarkistuksenne ei muutu. Kutsukaa /v1/verify-rajapintaa edelleen noncen kanssa.

Integrointiopas

Valmis luopumaan CAPTCHAsta?

Aloita lomakkeidesi suojaaminen — näkymättömästi. Luottokorttia ei tarvita.