CAPTCHAを楽しむ人などいません。信号機や消火栓を目を細めて探し、自分が人間であることを証明するのは、すべての正直な訪問者に課される税であり、それらのパズルが広告ネットワークへ送り返すデータもまた別個の懸念です。Cloudflare Turnstileはそのすべてを、賢くほぼ目に見えないチェックに置き換えます。パズルなし、追跡なし、そしてあなたに費用をかけることなく、訪問者が人間であることを確認します。2026年において、これはフォームをボットから守る最もすっきりした方法です。
このガイドでは、Turnstileとは何か、なぜ大半のサイトでreCAPTCHAより優れているのか、そしてあらゆるフォームに正確にどう追加するのか、さらに多くのチュートリアルが省略してしまう極めて重要なサーバー側検証のステップまで解説します。
要点
- TurnstileはCloudflareの無料でプライバシーに配慮したCAPTCHA代替で、視覚的なパズルがありません
- 無料で寛大な上限があり、すでにCloudflare上にあるサイトだけでなく、あらゆるウェブサイトで動作します
- 設定は2つの部分から成ります。フォーム上のウィジェットと、省略してはならないサーバー側検証の呼び出しです
- 異なるフォームに合わせて、managed、non-interactive、invisibleのウィジェットモードを提供します
- 問い合わせフォーム、サインアップ、ログイン、コメント欄でreCAPTCHAのドロップイン代替になります
Cloudflare Turnstileとは何か
Cloudflare Turnstile は、バックグラウンドで実行される一連の軽量で邪魔にならないブラウザチャレンジを用いて、訪問者が人間であることを確認するCAPTCHAの代替です。ユーザーにパズルを解かせる代わりに、ブラウザからの信号を分析し、ほとんどの場合は訪問者を静かに確認します。操作が必要な場合でも、通常は1つのチェックボックスであり、画像のグリッドになることは決してありません。
重要なのは、Turnstileがプライバシーを尊重するように作られていることです。広告を販売するためにユーザーをプロファイリングせず、ウェブ全体で個人を追跡することにも依存しません。訪問者をデータ商品にすることなくボット対策を得られ、これはGDPRを意識するサイトにとってますます重要です。
また、あらゆるサイトで動作します。Turnstileを使うためにドメインをCloudflareのプロキシ経由にする必要はありません。ウィジェットと検証APIはどこからでも動作します。
なぜreCAPTCHAを置き換えるのか
乗り換える理由は明快です。
- より良いユーザー体験。 正当な訪問者にはパズルがないため、フォームの離脱が減ります。
- プライバシー。 Turnstileは、支配的な代替手段とは異なり、広告のためにユーザーを追跡しないように設計されています。
- 無料かつ寛大。 Turnstileは無料で利用でき、上限は大半のサイトにとって十分に高く設定されています。
- どこでも動作。 DNSをCloudflareに置いていることに縛られません。
- シンプルな統合。 スクリプトタグ1つ、ウィジェット1つ、そしてサーバー側チェック1回です。
ほとんどの問い合わせフォーム、サインアップ、コメントシステムにとって、従来のCAPTCHAの使い勝手というコストを払い続ける理由はほとんどありません。
ステップ1: Turnstileウィジェットを作成する
CloudflareダッシュボードでTurnstileを開き、新しいサイトを追加します。名前と、ウィジェットを実行するホスト名を指定します。Cloudflareは2つのキーを発行します。
- HTMLに記述するsite key(公開)
- サーバー上に保持し、検証に使うsecret key(非公開)
ウィジェットモードも選択します。
| モード | 動作 |
|---|---|
| Managed | Cloudflareがリスクに基づいてチェックボックスを表示するかどうかを判断します(推奨の既定値) |
| Non-interactive | チェックボックスなしで静かに実行されます |
| Invisible | 完全に隠され、すべてバックグラウンドで実行されます |
managedモードは、ほとんどのフォームにとって妥当な出発点です。
ステップ2: ウィジェットをフォームに追加する
Turnstileスクリプトを読み込み、ウィジェット要素をフォームに配置します。YOUR_SITE_KEYをダッシュボードのsite keyに置き換えてください。
1<form action="/submit" method="POST">
2 <input type="email" name="email" required />
3
4 <!-- Turnstile widget -->
5 <div class="cf-turnstile" data-sitekey="YOUR_SITE_KEY"></div>
6
7 <button type="submit">Send</button>
8</form>
9
10<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
ウィジェットが実行されると、ワンタイムトークンを含むcf-turnstile-responseという名前の隠しフィールドがフォームに追加されます。このトークンこそ、次のステップでサーバーが検証するものです。
ステップ3: サーバーで検証する(これを省略しないこと)
これが実際に保護をもたらすステップであり、チュートリアルが最も省きがちなステップです。ウィジェットだけでは何も証明できません。攻撃者はフォームを直接送信できます。送信を信頼する前に、フォームからトークンを取り出し、Cloudflareのsiteverifyエンドポイントに対してサーバー側で検証しなければなりません。
トークンとsecret keyをhttps://challenges.cloudflare.com/turnstile/v0/siteverifyへ送信します。
1// Example: Cloudflare Worker or any server-side handler
2async function verifyTurnstile(token, ip, secret) {
3 const formData = new FormData();
4 formData.append("secret", secret);
5 formData.append("response", token);
6 if (ip) formData.append("remoteip", ip);
7
8 const result = await fetch(
9 "https://challenges.cloudflare.com/turnstile/v0/siteverify",
10 { method: "POST", body: formData }
11 );
12
13 const outcome = await result.json();
14 return outcome.success === true;
15}
outcome.successがtrueのときだけ、フォームのアクション(メール送信、アカウント作成、コメント投稿)に進んでください。falseなら送信を拒否します。secret keyをクライアント側のコードに決して露出させないでください。
開発に便利な詳細として、Cloudflareは常に成功する、常にブロックする、または常にインタラクティブなチャレンジを強制するテストキー を提供しており、本番化の前にあらゆる経路をテストできます。
Cloudflare Turnstileのよくあるユースケース
Turnstileは、ボットが悪用しかねないあらゆる場所に組み込めます。
- 問い合わせフォームでスパム送信を止める
- サインアップと登録で偽アカウントの作成をブロックする(Cloudflare Pagesのユーザーシステム とよく組み合わさります)
- ログインフォームでクレデンシャルスタッフィング攻撃を遅らせる
- コメント欄で、本物の読者を煩わせずにスパムを減らす
- ニュースレターの登録でリストをクリーンに保つ
サイト全体でボット対策を正しく、サーバー側検証もきちんと行う形で設定したい場合、それは私のウェブサイトセキュリティサービス で扱う内容の一部です。
重要なポイント
- Turnstileは無料でプライバシーに配慮したCAPTCHAの代替で、視覚的なパズルがありません
- DNSがCloudflareにあるサイトだけでなく、あらゆるウェブサイトで動作します
- 統合はフォーム上のウィジェットに加え、必須のサーバー側検証の呼び出しから成ります
- managedモードが最良の既定値です。non-interactiveとinvisibleのモードは特定のニーズ向けに存在します
- トークンは必ずサーバー側で検証してください。ウィジェットだけでは実質的な保護になりません
- フォーム、サインアップ、ログイン、コメントでreCAPTCHAのすっきりしたドロップイン代替になります
よくある質問
Cloudflare Turnstileは無料ですか? はい。Turnstileは無料で利用でき、上限は大半のウェブサイトにとって十分に寛大です。標準のウィジェットと検証フローに料金はかかりません。
Turnstileを使うにはサイトをCloudflareに置く必要がありますか? いいえ。TurnstileはDNSやホスティングの場所に関係なく、あらゆるウェブサイトで動作します。ウィジェットを作成し、site keyとsecret keyを取得するためにCloudflareアカウントが必要なだけです。
TurnstileはreCAPTCHAの良い代替ですか? ほとんどのサイトにとっては、はい。パズルのないより良いユーザー体験を提供し、広告のためにユーザーを追跡するのではなくプライバシーを尊重するよう設計され、無料です。同じユースケース、すなわち問い合わせフォーム、サインアップ、ログイン、コメントをカバーします。
トークンをサーバーで検証しなければなりませんか? はい、常にです。クライアント側のウィジェットだけでは、ボットがフォームを直接送信できるため、あなたを守れません。トークンをsecret keyとともにCloudflareのsiteverifyエンドポイントへ送り、successを返す送信だけを信頼しなければなりません。
Turnstileはどのウィジェットモードを提供しますか? 3つです。managed(Cloudflareがリスクに基づいてチェックボックスを表示するかを判断)、non-interactive(静かで、チェックボックスなし)、invisible(完全に隠れる)。managedモードがほとんどのフォームにとって推奨の既定値です。
本番化の前にTurnstileをテストできますか? はい。Cloudflareは常に成功する、常にブロックする、または常にインタラクティブなチャレンジを強制するテストキーを提供しており、本物のキーを展開する前に、開発の段階で各結果の経路を検証できます。
コメント