서버 측 검증
항상 서버에서 SilentShield Nonce를 검증하세요. 클라이언트 측 검사만으로는 봇이 우회할 수 있습니다.
왜 서버 측 검증이 필요한가요?
위젯은 브라우저에서 실행되며 폼에 Nonce를 삽입합니다. 봇은 위젯을 건너뛰고 폼을 직접 제출할 수 있습니다. 서버 측 검증을 통해 Nonce가 SilentShield에 의해 정당하게 발급되고 검증되었는지 확인합니다.
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" }
응답 형식
Responsejson
{
"ok": true,
"verdict": "human",
"confidence": 0.92,
"requested_nonce": "..."
}human- human — 사용자가 사람일 가능성이 매우 높습니다. 폼을 처리하세요.
suspicious- suspicious — 서버가 거부했습니다(HTTP 403, `ok: false`). 판정은 결정이 아니라 이유를 알려 줍니다. 결정은 계정의 임계값에 의해 이미 내려졌습니다.
bot- bot — 봇일 확률이 높습니다. 폼을 거부하세요.
권장 로직
서버는 이미 계정의 임계값을 적용했습니다. 거부는 HTTP 403과 `ok: false`로 도착합니다. 따라서 `bot`이 아니라 통과 여부를 확인하십시오. 그렇지 않으면 `suspicious`로 내려진 모든 거부와 판정이 없는 모든 응답(잘못된 키, 할당량 소진)을 통과시키게 됩니다.
Server-Side Logicjavascript
if not ok or verdict != "human":
양식 거부 (403)
else:
양식 정상 처리오류 처리
SilentShield API에 연결할 수 없는 경우(타임아웃, 5xx 오류), 전략을 결정하세요:
- Fail Open
- Fail open — 폼을 수락합니다 (더 나은 사용자 경험, 보안 수준 낮음)
- Fail Closed
- Fail closed — 폼을 거부합니다 (더 높은 보안, 사용자 경험 저하)
대부분의 애플리케이션에서는 로깅과 함께 fail open을 권장합니다. 중요한 폼(로그인, 결제)의 경우 fail closed를 사용해야 합니다.