SilentShield

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

Responsejson
{
  "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).

Server-Side Logicjavascript
if not ok or verdict != "human":
    atmesti formą (403)
else:
    apdoroti formą įprastai

Per 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.