問い合わせフォームのBot対策は何を使う?Cloudflare TurnstileとreCAPTCHAの違い

問い合わせフォームを公開すると、Botもやってきます
ホームページへ問い合わせフォームを設置すると、お客様からの相談だけでなく、迷惑な送信が届くことがあります。
英文のSPAM。
意味のない文字列。
大量のURL。
同じ内容を繰り返し送る営業メッセージ。
こうした送信の中には、人ではなく自動プログラムによるものがあります。
そこで使われるのがCAPTCHAです。
CAPTCHAとは、人間と自動プログラムを見分け、Botによるフォーム送信を減らすための仕組みです。
以前は
「画像の中から信号機を選んでください」
「私はロボットではありません」
といった操作を求められるものがよく使われていました。
現在は、利用者へできるだけ操作させず、裏側でBotかどうかを判断する仕組みも増えています。
代表的なものが
Google reCAPTCHA
と
Cloudflare Turnstile
です。
reCAPTCHAとは?
reCAPTCHAはGoogleが提供するBot対策サービスです。
現在Contact Form 7で利用されているreCAPTCHA v3では、従来のように利用者へ画像を選ばせるのではなく、基本的にバックグラウンドで動作します。
アクセスの状況などからBotの可能性を評価し、フォーム送信の判定に利用します。
長く利用されてきたサービスなので
「問い合わせフォームのSPAM対策=reCAPTCHA」
というイメージを持っている方も多いと思います。
一方、現在のGoogle Cloud版reCAPTCHAでは、利用量に応じた料金体系があります。
2026年9月時点では、Essentialsで月10,000件までの評価が無料とされています。
小規模な企業サイトで直ちに費用が発生するとは限りませんが、以前よりも料金体系を意識する必要があります。
Turnstileとは?
TurnstileはCloudflareが提供する、CAPTCHAの代替サービスです。
考え方はreCAPTCHAと似ています。
フォームを送信しようとしているアクセスが、人間なのかBotなのかを確認します。
大きな特徴は
多くの場合、利用者へ特別な操作を求めないこと
です。
必要な場合のみ簡単な確認操作が表示されます。
Cloudflareの無料プランでは、最大20個のウィジェットを作成でき、チャレンジ・検証回数は無制限とされています。
また、Turnstileを利用するためにホームページ自体をCloudflareへ移す必要もありません。
WordPressでも、他社サーバーでも利用できます。
どちらを選べばいい?
一般的な中小企業の問い合わせフォームであれば、現在のTrusKiteではTurnstileを第一候補にしやすいと考えています。
理由は
- 無料で利用しやすい
- 多くの場合、利用者の操作が不要
- WordPressでも利用できる
- Cloudflare構成でも利用できる
- 小規模サイトなら十分な利用枠がある
からです。
ただし
reCAPTCHAが悪いからTurnstileへ変更する
という話ではありません。
Google Cloudの高度な不正対策機能を利用したい場合や、すでにreCAPTCHAを前提としたシステムがある場合には、そのまま利用する方が合理的なこともあります。
大切なのは、そのサイトに必要な仕組みを選ぶことです。
WordPressなら、導入はかなり簡単になっています
WordPressでContact Form 7を使っている場合は分かりやすいです。
現在のContact Form 7には
Cloudflare Turnstile
と
Google reCAPTCHA v3
の両方について、公式の連携機能があります。
管理画面からサイトキーとシークレットキーを登録すれば、Contact Form 7側がフォームへの組み込みを行います。
特にContact Form 7は、2025年のバージョン6.1からTurnstileを正式統合し
特にreCAPTCHAを利用する理由がなければTurnstileを推奨する
という方針を示しています。
WordPressでは
プラグイン側が複雑な処理をある程度引き受けてくれる
ことが大きなメリットです。
Cloudflareで作ったサイトでは、自分たちで処理を設計する
一方、TrusKiteが今後増やしていくCloudflare上の静的サイトでは、少し考え方が変わります。
例えば
HTMLの問い合わせフォーム
↓
TurnstileでBot判定
↓
Cloudflare Workerへ送信
↓
WorkerがTurnstileのトークンをCloudflareへ照会
↓
正常ならメール送信処理へ進む
という構成にできます。
WordPressのようにプラグインを追加するのではなく
問い合わせ処理そのものにBot対策を組み込む
方法です。
少し開発の知識は必要ですが、その代わり
「どの条件なら送信させるのか」
を細かく設計できます。
Turnstileは画面に置くだけでは不十分です
ここは重要です。
Turnstileのマークをフォームに表示しただけでは、十分な対策にはなりません。
利用者側でTurnstileを通過すると、確認用のトークンが発行されます。
そのトークンを、フォームを受け取るサーバーやWorker側からCloudflareのSiteverify APIへ送り
「このトークンは本当に有効か」
を確認します。
このサーバー側検証が必須です。
画面側だけを確認していると、攻撃者がフォーム画面を通さず、送信先へ直接データを投げることができるためです。
つまり
見た目のCAPTCHAではなく、送信処理まで含めてBot対策
と考えます。
WordPressとCloudflareでは、フォームの作り方も違います
問い合わせフォームという一つの機能だけを見ても、それぞれに特徴があります。
比較 | WordPress | Cloudflare静的サイト+Workers |
|---|---|---|
フォーム作成 | プラグインで作りやすい | HTML等で設計 |
Turnstile | Contact Form 7で公式対応 | 直接組み込みやすい |
reCAPTCHA | Contact Form 7で公式対応 | 自分でAPI連携 |
Bot判定後の処理 | プラグイン中心 | Worker側で自由に設計 |
更新のしやすさ | 管理画面から変更しやすい | 制作者による更新が基本 |
管理対象 | WordPress・テーマ・プラグイン | コード・Worker・外部サービス |
カスタマイズ | プラグイン+コード | 自由度が高い |
どちらが上という話ではありません。
WordPressは
「管理画面から運用しやすい」
ことが強みです。
Cloudflare構成は
「必要な処理だけを自分たちで組み立てやすい」
ことが強みです。
CloudflareサイトだからTurnstileしか使えないわけではありません
ここも誤解しやすい部分です。
Cloudflareで作ったサイトにGoogle reCAPTCHAを使うこともできます。
反対に
WordPressサイトへCloudflare Turnstileを使うこともできます。
CloudflareとTurnstile。
GoogleとreCAPTCHA。
という提供元の違いはありますが、ホームページの制作方法とBot対策サービスは別々に選択できます。
ただ、Cloudflare Workersで問い合わせ処理を作るのであれば、同じCloudflareのTurnstileを利用する構成は管理しやすく、自然な選択肢になります。
CAPTCHAだけでは営業メールまでは止められません
ここも大切です。
TurnstileやreCAPTCHAは
Botによる自動送信
を減らす仕組みです。
しかし、人が実際にホームページを開き
会社名。
名前。
メールアドレス。
営業文章。
を入力して送信している場合、その人はBotではありません。
Turnstileを正常に通過できます。
つまり
CAPTCHAを入れたのに営業メールが届く
ことは普通にあり得ます。
実際のSPAM対策は、何層かに分けて考える
問い合わせフォームを守る場合、TrusKiteでは一つの仕組みだけへ頼らない方がよいと考えています。
例えば
1. Turnstile
Botによる自動送信を減らす。
2. Honeypot
人間には見えない入力欄を作り、自動入力Botを判定する。
3. Rate Limit
短時間に大量送信されることを制限する。
Rate Limitとは
一定時間に許可する送信回数を制限する仕組み
です。
4. 入力内容の確認
大量のURL。
極端に短い文章。
営業でよく使われる表現。
などを一定の条件で確認します。
5. ログ確認
実際に届いているSPAMを見ながら設定を調整します。
一枚の大きな壁を作るのではなく、小さな壁を何枚か置く。
セキュリティでは、この考え方が重要です。
強くしすぎると、本当のお客様まで止めてしまう
SPAMが増えると
「もっと厳しく止めたい」
と思います。
しかし、問い合わせフォームの目的はBotを止めることではありません。
お客様から問い合わせを受けること
です。
判定を強くしすぎて
普通のお客様が送信できない。
エラーの理由が分からない。
何度も認証させられる。
となってしまえば本末転倒です。
対策を追加した後は
PC。
Android。
iPhone。
Wi-Fi。
モバイル回線。
など、実際に利用される環境から送信テストを行います。
TrusKiteではWordPressとCloudflareで対策方法を変えます
TrusKiteでは、今後ホームページの用途に応じてWordPressとCloudflare構成を使い分けます。
WordPressなら、Contact Form 7とTurnstileなど、実績のある仕組みを利用できます。
Cloudflare構成なら
- Turnstile
- Worker側での検証
- Rate Limit
- 入力内容の判定
- メール送信
- ログ確認
などを、そのサイトに合わせて設計できます。
大切なのは
WordPressだからこの対策。
Cloudflareだからこの対策。
と機械的に決めることではありません。
問い合わせ件数。
SPAMの量。
お客様の年齢層。
スマートフォン利用。
運用する担当者。
それぞれを見ながら決めます。
Bot対策は「人間にはなるべく見えない」が理想です
CAPTCHAの目的は、利用者へ難しい問題を解かせることではありません。
Botを止めながら
普通のお客様には、普通に問い合わせてもらう。
これが理想です。
現在のTurnstileやreCAPTCHAは、以前の画像認証に比べると、その方向へ大きく進んでいます。
そして問い合わせフォーム全体では
Bot対策。
営業SPAM対策。
入力しやすさ。
メール到達。
運用方法。
まで一緒に考える必要があります。
「CAPTCHAを入れたから完成」
ではなく
本当に必要な問い合わせを、きちんと受け取れる状態を作ること。
そこまで含めて、問い合わせフォームの設計だと考えています。
※Bot:Webサイトへ自動的にアクセスし、フォーム送信などを行うプログラムです。
※CAPTCHA:人間とBotを判別し、不正な自動処理を防ぐための仕組みです。
※Cloudflare Turnstile:Cloudflareが提供するCAPTCHA代替サービスです。
※reCAPTCHA:Googleが提供するBot・不正アクセス対策サービスです。
※Siteverify:Turnstile等で発行されたトークンが正しいものか、サーバー側から確認するための仕組みです。
※Rate Limit:一定時間内に実行できるアクセス・送信回数を制限する仕組みです。
※本記事は2026年9月時点のCloudflare・Google・Contact Form 7公式情報をもとに作成しています。