SilentShield

Serververificatie

Verifieer de SilentShield Nonce altijd op uw server. Alleen client-side controles kunnen door bots worden omzeild.

Waarom serververificatie?

De Widget draait in de browser en injecteert een Nonce in formulieren. Een bot zou de Widget kunnen overslaan en het formulier rechtstreeks verzenden. Serververificatie garandeert dat de Nonce legitiem is uitgegeven en geverifieerd door SilentShield.

API-endpoint

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" }

Responsformaat

Responsejson
{
  "ok": true,
  "verdict": "human",
  "confidence": 0.92,
  "requested_nonce": "..."
}
human
human — Gebruiker is zeer waarschijnlijk een mens. Verwerk het formulier.
suspicious
suspicious — de server heeft geweigerd (HTTP 403, `ok: false`). Het oordeel noemt de reden, niet de beslissing: die is al genomen door de drempel van uw account.
bot
bot — Hoge zekerheid dat dit een bot is. Weiger het formulier.

Aanbevolen logica

De server heeft de drempel van uw account al toegepast: een weigering komt binnen als HTTP 403 met `ok: false`. Controleer dus op doorlaten, niet op `bot` — anders laat u elke weigering door die als `suspicious` is uitgesproken, en elk antwoord zonder oordeel (ongeldige sleutel, quotum op).

Server-Side Logicjavascript
if not ok or verdict != "human":
    formulier weigeren (403)
else:
    formulier normaal verwerken

Formulieren die met AJAX worden verzonden

De widget meldt een verzending wanneer het formulier met een gewone submit wordt verzonden. Ook verzoeken met XMLHttpRequest, waaronder jQuery.ajax, meldt hij, zolang de body van het verzoek het veld behavior_nonce bevat: hij houdt het verzoek even vast, meldt de typ- en muisgegevens en verstuurt het verzoek zodra het oordeel binnen is, uiterlijk na 15 seconden. Serialiseer dus het hele formulier, inclusief verborgen velden. Uw controle aan de serverzijde verandert niet.

Niet gedekt: verzoeken met fetch() en synchrone verzoeken. Daarvoor ontvangt de server geen typ- en muisgegevens en antwoordt /v1/verify met suspicious.

Foutafhandeling

Als de SilentShield API onbereikbaar is (time-out, 5xx-fout), bepaal dan uw strategie:

Fail Open
Fail open — Accepteer het formulier (betere gebruikerservaring, minder veilig)
Fail Closed
Fail closed — Weiger het formulier (veiliger, slechtere gebruikerservaring)

Voor de meeste toepassingen raden wij fail open met logging aan. Kritieke formulieren (inloggen, betaling) dienen fail closed te zijn.