SilentShield 2.6 lukker et hul, der kostede en butik tilmeldinger i checkout: formularer, der sendes med et knapklik og AJAX i stedet for en almindelig submit, blev ikke meldt til os. Denne artikel gennemgår, hvad der skete, hvad der ændres, og hvad du skal gøre. Den fulde liste findes i ændringsloggen.
Hvad der gik galt
Widgetten måler skrivning og musebevægelse og melder resultatet, når en besøgende sender en formular. Den lyttede efter browserens submit-hændelse. Nogle butikker udløser aldrig den hændelse. OpenCart 3-checkout indlæser for eksempel tilmeldingstrinnet via AJAX og sender det med en almindelig knap og jQuery.ajax.
Resultatet: din server spurgte /v1/verify om en besøgende, som vi kun havde modtaget den første sidehændelse for. Uden skrive- og musedata var afgørelsen „suspicious“, og tilmeldingen mislykkedes for et rigtigt menneske. Formularen var beskyttet, men beskyttelsen kunne ikke se den besøgende.
Hvad der ændres
Med version 2.6 genkender widgetten også denne type indsendelse. Den ser på den anmodning, der bærer behavior_nonce. Forlader anmodningen siden uden en submit-hændelse, og er formularen endnu ikke kontrolleret, holder widgetten den et øjeblik tilbage, melder indsendelsen med de indsamlede skrive- og musedata og sender anmodningen, når afgørelsen foreligger. Kommer der ingen besked inden for 15 sekunder, sendes anmodningen alligevel, og din server afgør som hidtil.
Alt andet er, som det var: formularer med almindelig submit, anmodninger uden nonce og almindelige sideindsendelser berøres ikke.
Sådan testede vi det
Vi genopbyggede OpenCart-checkout i vores lokale testmiljø med ægte jQuery og lod en simuleret kundeserver kalde /v1/verify. Med kontakten slået fra blev formularen med klik og AJAX afvist (HTTP 403, „suspicious“, årsagerne NO_TYPING_PAUSES og NO_MOUSE_MOVEMENT). Med kontakten slået til blev den samme besøgende accepteret (HTTP 200, „human“). En formular med almindelig submit, en almindelig sideindsendelse og en anmodning uden nonce opførte sig ens med kontakten slået til og fra.
Det bør du vide
- Den dækker anmodninger lavet med
XMLHttpRequest, hvilket omfatterjQuery.ajax. Formularer sendt medfetch()er endnu ikke dækket, bortset fra WooCommerce blok-checkout, som har sin egen håndtering. - Din kontrol på serveren ændres ikke. Bliv ved med at kalde
/v1/verifymed nonce.