SilentShield

Weryfikacja po stronie serwera

Nonce SilentShield należy zawsze weryfikować na swoim serwerze. Same kontrole po stronie klienta mogą zostać ominięte przez boty.

Dlaczego po stronie serwera?

Widget działa w przeglądarce i wstrzykuje nonce do formularzy. Bot może pominąć widget i przesłać formularz bezpośrednio. Weryfikacja po stronie serwera zapewnia, że nonce został legalnie wystawiony i zweryfikowany przez SilentShield.

Punkt końcowy API

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

Format odpowiedzi

Responsejson
{
  "ok": true,
  "verdict": "human",
  "confidence": 0.92,
  "requested_nonce": "..."
}
human
human — Użytkownik jest najprawdopodobniej człowiekiem. Formularz można przetworzyć.
suspicious
suspicious — serwer odrzucił (HTTP 403, `ok: false`). Werdykt podaje powód, a nie decyzję: ta zapadła już wraz z progiem Państwa konta.
bot
bot — Wysokie prawdopodobieństwo, że to bot. Formularz należy odrzucić.

Zalecana logika

Serwer zastosował już próg Państwa konta: odrzucenie przychodzi jako HTTP 403 z `ok: false`. Proszę zatem sprawdzać przepuszczenie, a nie `bot` — w przeciwnym razie przepuszczą Państwo każde odrzucenie wydane jako `suspicious` oraz każdą odpowiedź bez werdyktu (nieprawidłowy klucz, wyczerpany limit).

Server-Side Logicjavascript
if not ok or verdict != "human":
    odrzuć formularz (403)
else:
    przetwórz formularz normalnie

Formularze wysyłane przez AJAX

Widżet zgłasza wysłanie, gdy formularz jest wysyłany zwykłym submit. Zgłasza także żądania wykonywane przez XMLHttpRequest, w tym jQuery.ajax, o ile treść żądania zawiera pole behavior_nonce: wstrzymuje żądanie na chwilę, zgłasza dane o pisaniu i ruchach myszy i wysyła żądanie, gdy tylko nadejdzie werdykt, najpóźniej po 15 sekundach. Proszę więc serializować cały formularz wraz z ukrytymi polami. Państwa kontrola po stronie serwera się nie zmienia.

Nieobjęte: żądania wykonywane przez fetch() oraz żądania synchroniczne. W ich przypadku serwer nie otrzymuje danych o pisaniu i ruchach myszy, a /v1/verify odpowiada suspicious.

Obsługa błędów

Jeśli API SilentShield jest nieosiągalne (timeout, błąd 5xx), należy zdecydować o strategii:

Fail Open
Przepuszczenie — akceptacja formularza (lepsza obsługa użytkownika, mniejsze bezpieczeństwo)
Fail Closed
Blokowanie — odrzucenie formularza (większe bezpieczeństwo, gorsza obsługa użytkownika)

Dla większości aplikacji zalecamy przepuszczanie z logowaniem. Krytyczne formularze (logowanie, płatności) powinny blokować.