SilentShield 2.6 täpper till en lucka som kostade en butik registreringar i kassan: formulär som skickas med ett knappklick och AJAX i stället för en vanlig submit rapporterades inte till oss. Den här artikeln förklarar vad som hände, vad som ändras och vad du behöver göra. Hela listan finns i ändringsloggen.
Vad som gick fel
Widgeten mäter skrivande och musrörelser och rapporterar resultatet när en besökare skickar ett formulär. Den lyssnade på webbläsarens submit-händelse. Vissa butiker utlöser aldrig den händelsen. OpenCart 3-kassan laddar till exempel registreringssteget med AJAX och skickar det med en vanlig knapp och jQuery.ajax.
Resultatet: din server frågade /v1/verify om en besökare som vi bara hade fått den första sidhändelsen för. Utan skriv- och musdata blev bedömningen ”suspicious”, och registreringen misslyckades för en verklig person. Formuläret var skyddat, men skyddet kunde inte se besökaren.
Vad som ändras
Med version 2.6 känner widgeten också igen den här typen av inskickning. Den tittar på förfrågan som bär behavior_nonce. Om förfrågan lämnar sidan utan en submit-händelse och formuläret ännu inte har kontrollerats håller widgeten kvar den en kort stund, rapporterar inskickningen med den insamlade skriv- och musdatan och skickar förfrågan när bedömningen har kommit. Om inget svar kommer inom 15 sekunder skickas förfrågan ändå och din server avgör, som tidigare.
Allt annat är som förut: formulär med vanlig submit, förfrågningar utan nonce och enkla sidinskickningar berörs inte.
Hur vi testade
Vi byggde om OpenCart-kassan i vår lokala testmiljö med riktig jQuery och lät en simulerad kundserver anropa /v1/verify. Med reglaget avstängt avvisades formuläret som skickades med klick och AJAX (HTTP 403, ”suspicious”, orsakerna NO_TYPING_PAUSES och NO_MOUSE_MOVEMENT). Med reglaget påslaget godkändes samma besökare (HTTP 200, ”human”). Ett formulär med vanlig submit, en enkel sidinskickning och en förfrågan utan nonce betedde sig likadant med reglaget på och av.
Bra att veta
- Det omfattar förfrågningar som görs med
XMLHttpRequest, vilket inkluderarjQuery.ajax. Formulär som skickas medfetch()omfattas ännu inte, med undantag för WooCommerce blockkassa, som har egen hantering. - Din kontroll på serversidan ändras inte. Fortsätt anropa
/v1/verifymed nonce.