サーバーサイド検証

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
フェイルオープン — フォームを受け入れます(UXが良いが、安全性は低い)
Fail Closed
フェイルクローズド — フォームを拒否します(安全性が高いが、UXは悪い)

ほとんどのアプリケーションでは、ロギング付きのフェイルオープンを推奨します。重要なフォーム(ログイン、決済)ではフェイルクローズドにしてください。