Oferta dla nowych klientów−20 %20 % zniżki przez pierwsze 3 miesiące przy płatności miesięcznejZobacz plany
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ć.