SilentShield
← Πίσω στο Blog
ΈκδοσηAJAXOpenCart

SilentShield 2.6: οι φόρμες που στέλνονται με κλικ και AJAX ελέγχονται πλέον

Marc Wagner·8 Οκτωβρίου 2026·3 λεπτά ανάγνωση

Το SilentShield 2.6 κλείνει ένα κενό που στοίχισε σε ένα κατάστημα τις εγγραφές στο ταμείο: οι φόρμες που στέλνονται με κλικ σε κουμπί και AJAX αντί για κανονική υποβολή δεν μας αναφέρονταν. Αυτό το άρθρο εξηγεί τι συνέβη, τι αλλάζει και τι πρέπει να κάνετε. Ολόκληρη η λίστα βρίσκεται στο αρχείο αλλαγών.

Τι πήγε στραβά

Το widget μετρά την πληκτρολόγηση και την κίνηση του ποντικιού και αναφέρει το αποτέλεσμα όταν ένας επισκέπτης υποβάλλει μια φόρμα. Γι’ αυτό άκουγε το συμβάν submit του προγράμματος περιήγησης. Ορισμένα καταστήματα δεν ενεργοποιούν ποτέ αυτό το συμβάν. Το ταμείο του OpenCart 3, για παράδειγμα, φορτώνει το βήμα εγγραφής με AJAX και το στέλνει με ένα απλό κουμπί και jQuery.ajax.

Το αποτέλεσμα: ο διακομιστής σας ρωτούσε το /v1/verify για έναν επισκέπτη για τον οποίο δεν είχαμε λάβει παρά το πρώτο συμβάν σελίδας. Χωρίς δεδομένα πληκτρολόγησης και ποντικιού, η απόφαση ήταν «suspicious» και η εγγραφή απέτυχε για έναν πραγματικό άνθρωπο. Η φόρμα ήταν προστατευμένη, αλλά η προστασία δεν μπορούσε να δει τον επισκέπτη.

Τι αλλάζει

Με την έκδοση 2.6 το widget αναγνωρίζει και αυτό το είδος υποβολής. Παρακολουθεί το αίτημα που φέρει το behavior_nonce. Αν αυτό το αίτημα φεύγει από τη σελίδα χωρίς συμβάν submit και η φόρμα δεν έχει ελεγχθεί ακόμη, το widget το κρατά για λίγο, αναφέρει την υποβολή με τα δεδομένα πληκτρολόγησης και ποντικιού που συνέλεξε και στέλνει το αίτημα μόλις υπάρξει απόφαση. Αν δεν έρθει απάντηση μέσα σε 15 δευτερόλεπτα, το αίτημα στέλνεται έτσι κι αλλιώς και ο διακομιστής σας αποφασίζει όπως πριν.

Όλα τα υπόλοιπα μένουν όπως ήταν: οι φόρμες με κανονική υποβολή, τα αιτήματα χωρίς nonce και οι απλές υποβολές σελίδας δεν επηρεάζονται.

Πώς το δοκιμάσαμε

Ξαναχτίσαμε το ταμείο του OpenCart στο τοπικό περιβάλλον δοκιμών μας με πραγματικό jQuery και αφήσαμε έναν προσομοιωμένο διακομιστή πελάτη να καλέσει το /v1/verify. Με τον διακόπτη απενεργοποιημένο, η φόρμα με κλικ και AJAX απορρίφθηκε (HTTP 403, «suspicious», λόγοι NO_TYPING_PAUSES και NO_MOUSE_MOVEMENT). Με τον διακόπτη ενεργοποιημένο, ο ίδιος επισκέπτης έγινε δεκτός (HTTP 200, «human»). Μια φόρμα με κανονική υποβολή, μια απλή υποβολή σελίδας και ένα αίτημα χωρίς nonce συμπεριφέρθηκαν με τον ίδιο τρόπο με τον διακόπτη ενεργοποιημένο και απενεργοποιημένο.

Τι πρέπει να γνωρίζετε

  • Καλύπτει αιτήματα που γίνονται με XMLHttpRequest, κάτι που περιλαμβάνει το jQuery.ajax. Οι φόρμες που στέλνονται με fetch() δεν καλύπτονται ακόμη, εκτός από το ταμείο με μπλοκ του WooCommerce, που έχει δική του διαχείριση.
  • Ο έλεγχός σας στον διακομιστή δεν αλλάζει. Συνεχίστε να καλείτε το /v1/verify με το nonce.

Οδηγός ενσωμάτωσης

Έτοιμοι να απαλλαγείτε από το CAPTCHA;

Ξεκινήστε να προστατεύετε τις φόρμες σας — αόρατα. Δεν χρειάζεται πιστωτική κάρτα.