Serverio pusės patikra
Visada patikrinkite SilentShield nonce savo serveryje. Vien kliento pusės patikrinimai gali būti apeiti botų.
Kodėl serverio pusėje?
Valdiklis veikia naršyklėje ir įterpia nonce į formas. Botas gali praleisti valdiklį ir pateikti formą tiesiogiai. Serverio pusės patikra užtikrina, kad nonce buvo teisėtai išduotas ir patvirtintas SilentShield.
API galinis taškas
- 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" }
Atsakymo formatas
{
"ok": true,
"verdict": "human",
"confidence": 0.92,
"requested_nonce": "..."
}human- human — vartotojas greičiausiai yra žmogus. Apdorokite formą.
suspicious- suspicious — serveris atmetė (HTTP 403, `ok: false`). Verdiktas nurodo priežastį, o ne sprendimą: jį jau priėmė jūsų paskyros slenkstis.
bot- bot — didelis tikrumas, kad tai botas. Atmeskite formą.
Rekomenduojama logika
Serveris jau pritaikė jūsų paskyros slenkstį: atmetimas ateina kaip HTTP 403 su `ok: false`. Todėl tikrinkite praleidimą, o ne `bot` — kitaip praleisite kiekvieną atmetimą, paskelbtą kaip `suspicious`, ir kiekvieną atsakymą be verdikto (netinkamas raktas, išnaudota kvota).
if not ok or verdict != "human":
atmesti formą (403)
else:
apdoroti formą įprastaiPer AJAX siunčiamos formos
Valdiklis praneša apie pateikimą, kai forma siunčiama įprastu submit. Jis taip pat praneša apie užklausas, atliekamas per XMLHttpRequest, įskaitant jQuery.ajax, jei užklausos turinyje yra laukas behavior_nonce: trumpam sulaiko užklausą, praneša spausdinimo ir pelės duomenis ir išsiunčia užklausą, kai tik gaunamas verdiktas, vėliausiai po 15 sekundžių. Todėl serializuokite visą formą, įskaitant paslėptus laukus. Jūsų serverio pusės patikra nesikeičia.
Neapima: užklausų, atliekamų per fetch(), ir sinchroninių užklausų. Tokiu atveju serveris negauna spausdinimo ir pelės duomenų, o /v1/verify atsako suspicious.
Klaidų apdorojimas
Jei SilentShield API nepasiekiama (laiko limitas, 5xx klaida), nuspręskite dėl savo strategijos:
- Fail Open
- Praleisti — priimti formą (geresnė vartotojo patirtis, mažiau saugu)
- Fail Closed
- Blokuoti — atmesti formą (saugiau, blogesnė vartotojo patirtis)
Daugumai programų rekomenduojame praleisti su registravimu. Svarbios formos (prisijungimas, mokėjimas) turėtų blokuoti.