SilentShield

Επαλήθευση στον διακομιστή

Πάντα να επαληθεύετε το SilentShield nonce στον διακομιστή σας. Οι έλεγχοι μόνο στην πλευρά του πελάτη μπορούν να παρακαμφθούν από bots.

Γιατί στον διακομιστή;

Το Widget εκτελείται στο πρόγραμμα περιήγησης και εισάγει ένα nonce στις φόρμες. Ένα bot μπορεί να παρακάμψει το Widget και να υποβάλει τη φόρμα απευθείας. Η επαλήθευση στον διακομιστή διασφαλίζει ότι το nonce εκδόθηκε νόμιμα και επαληθεύτηκε από το SilentShield.

Τελικό σημείο API

Method
POST
URL
https://api.silentshield.io/api/v1/captcha/verify-nonce
Headers
X-Api-Key: YOUR_API_KEY Content-Type: application/json
Body
{ "nonce": "the-nonce-from-the-form" }

Μορφή απάντησης

Responsejson
{
  "ok": true,
  "verdict": "human",
  "confidence": 0.92,
  "requested_nonce": "..."
}
human
human — Ο χρήστης είναι πολύ πιθανό άνθρωπος. Επεξεργαστείτε τη φόρμα.
suspicious
suspicious — ο διακομιστής την απέρριψε (HTTP 403, `ok: false`). Η ετυμηγορία αναφέρει τον λόγο, όχι την απόφαση: αυτή έχει ήδη ληφθεί από το κατώφλι του λογαριασμού σας.
bot
bot — Υψηλή βεβαιότητα ότι πρόκειται για bot. Απορρίψτε τη φόρμα.

Συνιστώμενη λογική

Ο διακομιστής έχει ήδη εφαρμόσει το κατώφλι του λογαριασμού σας: μια απόρριψη φτάνει ως HTTP 403 με `ok: false`. Ελέγχετε λοιπόν για έγκριση, όχι για `bot` — αλλιώς αφήνετε να περάσει κάθε απόρριψη που εκδόθηκε ως `suspicious`, καθώς και κάθε απάντηση χωρίς ετυμηγορία (άκυρο κλειδί, εξαντλημένο όριο).

Server-Side Logicjavascript
if not ok or verdict != "human":
    απόρριψη της φόρμας (403)
else:
    κανονική επεξεργασία της φόρμας

Φόρμες που στέλνονται με AJAX

Το widget αναφέρει μια υποβολή όταν η φόρμα στέλνεται με κανονική υποβολή. Αναφέρει επίσης αιτήματα που γίνονται με XMLHttpRequest, συμπεριλαμβανομένου του jQuery.ajax, εφόσον το σώμα του αιτήματος περιέχει το πεδίο behavior_nonce: κρατά το αίτημα για λίγο, αναφέρει τα δεδομένα πληκτρολόγησης και ποντικιού και στέλνει το αίτημα μόλις υπάρξει απόφαση, το αργότερο μετά από 15 δευτερόλεπτα. Σειριοποιήστε λοιπόν ολόκληρη τη φόρμα, μαζί με τα κρυφά πεδία. Ο έλεγχός σας στον διακομιστή δεν αλλάζει.

Δεν καλύπτονται: αιτήματα που γίνονται με fetch() και σύγχρονα αιτήματα. Γι’ αυτά ο διακομιστής δεν λαμβάνει δεδομένα πληκτρολόγησης και ποντικιού και το /v1/verify απαντά suspicious.

Διαχείριση σφαλμάτων

Εάν το API του SilentShield δεν είναι προσβάσιμο (timeout, σφάλμα 5xx), αποφασίστε τη στρατηγική σας:

Fail Open
Fail open — Αποδεχτείτε τη φόρμα (καλύτερη εμπειρία χρήστη, λιγότερο ασφαλές)
Fail Closed
Fail closed — Απορρίψτε τη φόρμα (πιο ασφαλές, χειρότερη εμπειρία χρήστη)

Για τις περισσότερες εφαρμογές, συνιστούμε fail open με καταγραφή. Κρίσιμες φόρμες (σύνδεση, πληρωμή) θα πρέπει να χρησιμοποιούν fail closed.