検証した主張
「フォームにTurnstileのウィジェットを貼れば、サーバー側の処理を変えずに自動投稿を防げる。」
発見元は調査の入口であり、判定の根拠には使用していません。ブラウザ側の成功表示を信用しきらない
Turnstileウィジェットはユーザーのブラウザでトークンを作ります。しかし攻撃者はフォームの見た目を経由せず、送信先APIへ直接リクエストできます。そこでサーバーは受け取ったトークンをCloudflareのSiteverify APIへ送って判定します。
検証失敗時は問い合わせ送信やアカウント作成を実行しない実装にします。秘密鍵をブラウザへ公開したり、ログへ記録したりしません。
トークンの有効期限と再利用
公式資料によると、トークンは短時間のみ有効で、一度使うと再利用できません。フォーム送信が長く保留された場合や二重送信時には、再取得とユーザーへの案内が必要です。
検証結果だけで業務データの妥当性を保証できるわけではありません。入力検証、認証、レート制限は別途必要です。
導入後のテスト
正常送信、期限切れ、空トークン、同じトークンの再送、Siteverifyへの通信障害を試します。正規ユーザーが送信できないときの表示も設計します。
静的ページだけで送信処理を持たないサイトなら、ウィジェットを置く理由自体を確認してください。
検証条件・対象環境
| 対象プラン | 製品・契約プランで機能と表示範囲が異なる |
|---|---|
| 地域 | 提供地域・利用環境で表示や条件が異なる場合あり |
| 利用面 | Cloudflare Dashboard / Webサイト・API |
| 提供状態 | 2026年9月22日時点の公式公開資料。ダッシュボードの名称・契約条件は変更され得る |
| 実機確認 | Cloudflare公式資料で機能と制限を照合しました。個別のサイト・アカウントで設定変更や攻撃の再現はしていません。 |
| 次回見直し | 2026.10.22 |
よくある質問
Turnstileはウィジェットだけで使えますか?
Turnstileの画面表示だけでは検証が完了しません。送信されたトークンをサーバー側でSiteverifyへ送り、結果を確認してから対象の操作を実行します。
更新履歴
公式資料を確認し、固有の利用情報を含まない一般的な手順・注意点として整理。
実機検証は未実施のため、根拠レベルを公開基準に合わせてAからBに訂正。
情報源
一次情報と発見元を区別し、各ページの公開日と確認日を記録しています。
- Server-side validation
TurnstileのSiteverify必須要件。
公開: 公開日未確認(閲覧日を記録)確認: 2026.09.22 - Rate limiting best practices
対象パス・メソッド・閾値の決め方。
公開: 公開日未確認(閲覧日を記録)確認: 2026.09.22