SilentShield

Ověření na straně serveru

Vždy ověřujte SilentShield nonce na svém serveru. Kontroly pouze na straně klienta mohou být obejity boty.

Proč na straně serveru?

Widget běží v prohlížeči a vkládá nonce do formulářů. Bot může widget přeskočit a odeslat formulář přímo. Ověření na straně serveru zajišťuje, že nonce byl legitimně vydán a ověřen 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" }

Formát odpovědi

Responsejson
{
  "ok": true,
  "verdict": "human",
  "confidence": 0.92,
  "requested_nonce": "..."
}
human
human — Uživatel je s vysokou pravděpodobností člověk. Zpracujte formulář.
suspicious
suspicious — server odmítl (HTTP 403, `ok: false`). Verdikt uvádí důvod, nikoli rozhodnutí: to už padlo s prahem vašeho účtu.
bot
bot — Vysoká jistota, že se jedná o bota. Odmítněte formulář.

Doporučená logika

Server už uplatnil práh vašeho účtu: odmítnutí přichází jako HTTP 403 s `ok: false`. Kontrolujte proto propuštění, nikoli `bot` — jinak propustíte každé odmítnutí vydané jako `suspicious` a každou odpověď bez verdiktu (neplatný klíč, vyčerpaná kvóta).

Server-Side Logicjavascript
if not ok or verdict != "human":
    odmítnout formulář (403)
else:
    zpracovat formulář běžným způsobem

Formuláře odesílané přes AJAX

Widget hlásí odeslání, když se formulář odesílá běžným submitem. Hlásí také požadavky odeslané přes XMLHttpRequest, včetně jQuery.ajax, pokud tělo požadavku obsahuje pole behavior_nonce: požadavek na okamžik zadrží, nahlásí data o psaní a myši a odešle ho, jakmile je verdikt k dispozici, nejpozději po 15 sekundách. Serializujte proto celý formulář včetně skrytých polí. Vaše kontrola na serveru se nemění.

Nepokryto: požadavky odeslané přes fetch() a synchronní požadavky. Server pro ně nedostane data o psaní a myši a /v1/verify odpoví suspicious.

Zpracování chyb

Pokud je SilentShield API nedostupné (timeout, 5xx chyba), rozhodněte se o své strategii:

Fail Open
Propustit — Přijměte formulář (lepší UX, méně bezpečné)
Fail Closed
Zablokovat — Odmítněte formulář (bezpečnější, horší UX)

Pro většinu aplikací doporučujeme propustit s logováním. Kritické formuláře (přihlášení, platba) by měly blokovat.