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
{
"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).
if not ok or verdict != "human":
odmítnout formulář (403)
else:
zpracovat formulář běžným způsobemFormulář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.