TurnstileとManaged Challengeの違い - Cloudflareの2つのボット対策を理解する
Cloudflareを使ったサイトの保護で「Turnstile」と「Managed Challenge」という2つのアプローチがあります。
どちらもボットと人間を見分けるための機能ですが、設計思想や使いどころが異なります。
この記事では、サイト管理者の視点からその違いを整理します。
そもそも何のための機能か
どちらも、悪意あるボットを弾きつつ、正規のユーザーはなるべくスムーズに通過させることを目的としています。
従来のCAPTCHA(「バスが写っている画像をすべて選んでください」というあれ)は、ユーザーにとってストレスが大きく、アクセシビリティの面でも課題がありました。TurnstileもManaged Challengeも、そうした従来のCAPTCHAの代替として設計されています。
仕組みの核心は共通しています。JavaScriptやブラウザの挙動、アクセスパターンなどのシグナルを分析し、安全と判断できれば何も表示せずに通過させ、怪しければチャレンジ(確認画面)を出す、というものです。
Managed Challenge とは
Managed Challengeは、CloudflareのWAFやDDoS対策と連携して動作する、ネットワーク全体を守るための仕組みです。
アクセスが怪しいと判断されると、ページ全体がCloudflareのチェック画面に切り替わります。よく見かける「少しお待ちください…」という画面がこれです。チェックが通れば元のサイトに遷移し、cf_clearance というセッションクッキーが発行されます。このクッキーがある間は、同じサイト内で繰り返しチャレンジを求められません。
Managed Challengeのメリット
- サイトへの実装が不要: CloudflareのダッシュボードでWAFルールを設定するだけで動作する
- サイト全体を守れる: 特定のページだけでなく、サイト全体へのアクセスをCloudflare側でフィルタリングできる
- 自動的に最適化される: チャレンジの種類(JavaScriptチャレンジ・インタラクティブチャレンジなど)をCloudflareが自動で選択する
Managed Challengeのデメリット
- 見た目をカスタマイズしにくい: チャレンジ画面はCloudflareのデザインが基本であり、自社ブランドに合わせた細かい調整は難しい
- ユーザー体験が断絶する: ページ全体が切り替わるため、フォームの途中などでチャレンジが出ると体験が損なわれる
- 誤検知の影響が大きい: 正規ユーザーに対してチャレンジが出た場合、サイト全体へのアクセスがブロックされる
Turnstile とは
Turnstileは、サイト内の特定の場所(フォームなど)に埋め込む、ウィジェット型の仕組みです。
ログインフォームやお問い合わせフォームの近くに小さなウィジェットを配置し、バックグラウンドで人間かどうかを判別します。安全と判断されれば何も表示されず、怪しければチェックボックスが現れる、という動作です。
Managed Challengeとは異なり、cf_clearance クッキーは発行されません。代わりに、フォーム送信時に使う一回限りのトークンが発行されます。サーバー側でこのトークンを検証することで、ボットからの送信をブロックします。
Turnstileのメリット
- ユーザー体験が自然: ページ全体が切り替わらず、フォームの流れを壊さない
- カスタマイズ性が高い: ウィジェットのデザインや配置をサイト側で自由に制御できる
- CloudflareのCDNなしでも使える: Cloudflareのプロキシを経由していないサイトにも導入できる
- 特定の場所だけ守れる: ログインフォームや投稿フォームなど、ピンポイントで保護したい箇所に適用できる
Turnstileのデメリット
- 実装の手間がかかる: フロントエンドにスクリプトを埋め込み、バックエンドでトークン検証の処理を書く必要がある
- 守れる範囲が限定的: ウィジェットを埋め込んだ場所しか保護されない。サイト全体への不正アクセスは防げない
- サーバーサイドの処理が必要: トークン検証のためにCloudflare APIを呼び出す実装が必要
比較表
| 項目 | Managed Challenge | Turnstile |
|---|---|---|
| 動作する場所 | Cloudflare側(ネットワーク) | サイト側(フォーム内) |
| 守れる範囲 | サイト全体 | ウィジェットを置いた場所のみ |
| 実装の手間 | ほぼ不要(WAFルール設定のみ) | フロント+バックエンドの実装が必要 |
| ユーザー体験 | ページ全体が切り替わる | ページ内で完結、自然な流れ |
| カスタマイズ性 | 低い | 高い |
| Cloudflare CDN | 必要 | 不要 |
| 発行されるもの | セッションクッキー(cf_clearance) | 一回限りのトークン |
どちらを選ぶべきか
サイト全体を手軽に守りたいなら → Managed Challenge
すでにCloudflareのプロキシを使っているなら、WAFルールを一つ追加するだけで動作します。特定の条件(例:特定の国からのアクセス、特定のパスへのリクエスト)に合致したときだけチャレンジを出す、という柔軟な設定も可能です。「まず入口を守る」という用途に向いています。
フォームやAPIを守りたいなら → Turnstile
ログインフォーム、会員登録フォーム、お問い合わせフォームなど、特定のアクションを保護したい場合に適しています。実装の手間はありますが、ユーザーへの影響が小さく、サイトのデザインにも馴染みやすいのが利点です。
両方を組み合わせる
実際には、両方を組み合わせることもできます。Cloudflare側でManaged Challengeを使って不審なアクセスを入口でフィルタリングしつつ、ログインフォームにはTurnstileを埋め込んでフォーム送信を保護する、という多層防御の構成です。
まとめ
- Managed Challengeは「Cloudflare側で動く、サイト全体を守るネットワークレベルの仕組み」
- Turnstileは「サイト側に埋め込む、特定の場所を守るウィジェット型の仕組み」
- 技術的な核心(ブラウザシグナルの分析)は共通だが、動く場所と守れる範囲が異なる
- 手軽さを優先するならManaged Challenge、体験の質とカスタマイズを優先するならTurnstile
- 可能であれば両方を組み合わせた多層防御が理想
どちらの仕組みも、従来のCAPTCHAより正規ユーザーへの負担が少ない点は共通しています。自分のサイトで何を守りたいか、どこを守りたいかを起点に選択するとよいでしょう。