CONTENTS

Contact Form 7のスパム対策|Cloudflare Turnstile設定をステップバイステップ

Contact Form 7のスパム対策|Cloudflare Turnstile設定をステップバイステップ

「お問い合わせフォームに、海外から意味不明な英語のスパムが毎日大量に届く…」

そんなご相談が、ここ半年で本当に増えてきました。

WordPress制作歴15年、これまで3,000件以上のサイトを見てきた中で、私のお客様でも「2日で100件届いた」というケースが立て続けに発生しています。

こんた

実はContact Form 7(以下CF7)は、スパム対策が何も入っていない状態だと完全に素通りしてしまうんですよね。
ボットからすれば、絶好のターゲットです。

そこで使うのが「Cloudflare Turnstile」というスパム対策ツール。
reCAPTCHAの代わりとして注目されていて、CF7の開発者・三好隆之さん(Takayuki Miyoshi)も 公式ブログ「Turnstile integration」 でこちらを推奨するスタンスを示しています。

この記事は、Web制作者の方も、自社サイトのご担当者様も、両方が読める形でまとめました。

  • Cloudflareアカウント作成からTurnstile発行
  • WordPressへのCF7連携
  • honeypotとの併用
  • よくあるつまずきとFAQ

までを順を追ってお伝えします。

「reCAPTCHAだと重い」「ユーザーにチェック操作させたくない」「Googleの追跡が気になる」…そんな方にこそ、Turnstileは刺さる選択肢です。

「自分でやるのは難しそう」というご担当者様へ

アカウント作成(STEP 1〜2)まではご自身でやっていただいて、その後の設定(STEP 3〜7)は制作会社にお任せする形が一般的です。
当社でもホームページ保健室でご相談を受け付けています。

目次

なぜContact Form 7にスパム対策が必須なのか

CF7は便利ですが、初期状態のままだとスパムにとって完全に無防備です。
最近は1サイトで「1日100件超」のスパムが届くケースも珍しくありません。

スパム対策ゼロの状態は「無防備」

CF7はWordPress公式プラグインとして圧倒的なシェアを持つフォームプラグインですが、初期状態ではCAPTCHA系の機能が一切入っていません

つまり、フォームのURLを知っているボットからすれば、何の障害もなく自動投稿し放題の状態。最近は海外からのスパム問合せが急増していて、ある日突然100件超のスパムが2日で押し寄せた、というケースもありました。

スパム放置のリスク

  • お問い合わせメールに本物の問合せが埋もれて見落とす
  • 自動返信メールが大量に送信されてサーバー負荷・送信制限に到達
  • 添付されたURLが悪質サイトの場合、スタッフがうっかりクリックする危険

「うちは小さいサイトだから大丈夫」というのは通用しません。

フォームがある=ボットが見つけたら攻撃対象になる、と考えておくのが現実的です💡

実は私も、ヒヤッとしたことがあります!

数年前、自社サイトでreCAPTCHA v2を入れて「まあ大丈夫だろう」と放置していたら、ある朝メールボックスに同じパターンの英語スパムが300件届いていたことがありました。

自動返信も全部送信されてサーバーに負荷がかかって、本物の問合せ1件に気づくのが半日遅れたんですよね。お客様の温度感が落ちる前に対応できなかった時は本当に焦りました💦

そこからは「お客様にも同じ思いをしてほしくない」と思って、Turnstile移行を積極的に提案しています。

なぜTurnstile?reCAPTCHAじゃダメ?

結論、プライバシー・費用・速度の3点でTurnstileが有利です。
reCAPTCHAは2024年以降Enterprise版への統合が進んでおり、規模が大きくなると課金リスクが上がる流れになっています。
CF7開発者さんもTurnstile推奨です。

TurnstileとreCAPTCHAの違い

観点Cloudflare TurnstileGoogle reCAPTCHA v3
費用完全無料・無制限月100万回まで無料(超過は有料Enterpriseへ)
ユーザー操作チェック不要・透過判定チェック不要・スコア判定
プライバシーデータ収集なし・CookieなしGoogleがトラッキング・Cookie使用
表示控えめなウィジェット(緑チェック)右下にバッジ常時表示
速度軽量・高速やや重い
CF7公式対応公式プラグインあり公式プラグインあり

特に大きいのは、プライバシー面と費用面です。

Googleの規約変更で、reCAPTCHAは段階的にEnterprise版への統合が進められていて、規模が大きくなると課金リスクが上がる流れ。Turnstileなら今後その心配がありません。

CF7開発者・武井さんもTurnstile推奨

Contact Form 7の開発者・三好隆之さん(Takayuki Miyoshi)も、CF7公式ブログの Turnstile integration 記事でTurnstileを推す姿勢を示しています。CF7との相性は折り紙付き、というわけです。

導入の全体像

最初に、これから何をするかの地図をお見せしますね。合計25分前後で完了します!

  • Cloudflareアカウントを作成(5分)
     └ メール認証して、ダッシュボードへ
  • Turnstileサイトを発行(3分)
     └ Site Key と Secret Key を取得
  • WordPressにプラグイン導入(5分)
     └ Simple Cloudflare Turnstile を入れる
  • Site Key / Secret Key を設定 + CF7有効化(3分)
  • CF7フォームに自動表示されているか確認(2分)
  • honeypotも併用(2分)
  • テスト送信で動作確認(5分)

順番にご案内しますね。STEP 1〜2はクライアント・ご担当者様の作業領域STEP 3〜7は制作者・WP管理者の作業領域として分けて読んでいただいてOKです。

STEP

Cloudflareアカウントを作成する

所要5分・完全無料。 すでにCloudflareアカウントをお持ちの方はSTEP 2へ進んでください。

STEP

サインアップページにアクセス

ブラウザで以下のURLを開いてください。

https://dash.cloudflare.com/sign-up

Cloudflareサインアップページ全体
Cloudflareサインアップページ
STEP

メールアドレスとパスワードを入力

Cloudflareサインアップフォーム入力画面(メールアドレス・パスワード)
サインアップフォーム入力画面
  • メールアドレス
    会社用の長く使うもの(個人Gmail等は引き継ぎで困るので避けたい)
  • パスワード
    8文字以上(記号・数字含む推奨)
  • Cloudflare認証にチェック

「Sign Up」ボタンをクリック。

STEP

認証メールを確認

入力したメールアドレスにCloudflareから認証メールが届きます。「Verify email」ボタンをクリックして認証完了。

Cloudflareから届く認証メール(Verify emailボタン)
Cloudflareの認証メール
STEP

用途を選択(またはSkip)

認証が済むと、まず「Welcome! How do you plan to use Cloudflare?」というようこそ画面が出てきます。

「Personal」「Professional」「Personal & Professional」の3つから用途を選ぶ画面ですが、Turnstileの利用そのものには影響しません
迷ったら右下の「Skip →」でスキップしてもOKです。

ようこそ画面(Personal / Professional / Personal & Professional の3カード)
ようこそ画面(Personal / Professional / Personal & Professional の3カード)
  • Personal
    個人ブログ・自分のポートフォリオサイト用
  • Professional
    クライアントの企業サイト・お仕事サイト用
  • Personal & Professional
    両方の用途で使う方
  • Skip
    後で決めたい方(あとからでも変更可能)

後からでも変更できるので、深く考えなくて大丈夫です。

Skipすると、もう1段「How would you like to get started?」というオンボーディング画面が続きます。

How would you like to get started? 画面(Build / Protect / Connect の3カード)
How would you like to get started? 画面(Build / Protect / Connect の3カード)
  • Build and scale apps globally
    アプリ開発・コンピュート/AI/ストレージ用
  • Protect your apps and users
    セキュリティ系(WAF・Bot対策など)。Turnstileに一番近いカテゴリ
  • Connect and accelerate traffic
    CDN・DNSなどネットワーク系
  • Skip
    何も選ばずに進む(OK)

こちらもTurnstileの利用そのものには影響しないので、Skipで問題ありません。
強いて選ぶならTurnstileはセキュリティ系なので「Protect your apps and users」が近いですが、迷ったらSkipでサクッと進みましょう!

STEP

ダッシュボードに到達

用途を選ぶ(またはSkip)と、ダッシュボードに入れます。

Cloudflareダッシュボードのトップ画面(Domains / Workers and Pages / Zero Trust security の3カード)
Cloudflareダッシュボードのトップ画面

これでアカウント作成は完了です!

💡 2段階認証の設定もおすすめ

右上のアカウントアイコン → 「My Profile」 → 「Authentication」から、2段階認証(2FA)を有効にしておくとより安心です。

STEP

Turnstileサイトを発行する

所要3分。

ダッシュボードからTurnstileの設定画面に進み、サイトを登録してSite KeySecret Keyの2つを取得します。

STEP

サイドバーから「Turnstile」にアクセス

左サイドバー「Protect & Connect」グループの中にある「Application security」をクリックして展開すると、メニュー内に「Turnstile」があります。

Application security 展開後のTurnstileメニュー位置
Application security 展開後のTurnstileメニュー位置
💡 もっと早く開きたい時は Quick search

画面上部の Quick search(Mac: ⌘K / Windows: Ctrl+K)に「Turnstile」と入力すると、メニューを探さずに一発で開けます。

STEP

「Add widget」をクリック

Turnstileの「Overview」画面が開きます。中央の「Get started」カードにある「Add widget」ボタンをクリック。

Turnstile Overview画面の「Add widget」ボタン
Turnstile Overview画面の「Add widget」ボタン
「Migrate from a CAPTCHA Service」って?

「Add widget」の右にある「Migrate from a CAPTCHA Service」は、すでに reCAPTCHA を使っている方向けの移行支援ツールです。
今回は新規導入の手順なので、そのまま「Add widget」で進めてOKです。

STEP

サイト情報を入力

以下の情報を入力します。

項目入力内容
Widget nameわかりやすい名前(例:自社サイト お問い合わせフォーム)
Hostname ManagementAdd Hostnames」ボタンから設置するドメインを追加(例:example.com)。1ウィジェットで最大10個まで登録可能
Widget ModeManaged (Recommended) を選択
Skip future security rule challenges
(旧Pre-clearance)
No のまま(標準利用はOFFでOK)
サイト情報入力画面
サイト情報入力画面

Widget modeの違い

モード表示・動作使いどころ
Managed
(Recommended)
Cloudflareが自動判定。多くは非対話/不可視で完了し、高リスクのみ追加チャレンジ表示基本これでOK(推奨)
Non-interactiveローディングスピナーで検証中表示。操作は不要UX一貫性を保ちつつ「動いてる感」を見せたい時
Invisible画面上に何も表示せずサイレント検証視認チェックを完全に消したい時

迷ったら Managed (Recommended) が最も安全で実績があります。

💡 「Skip future security rule challenges」って?

これは Pre-clearance の新表記です。Cloudflareプロキシ環境で、Turnstileを通過したユーザーが その後の他のセキュリティルールも自動でバイパス できる仕組み。

通常のフォームスパム対策が目的なら 「No」のままでOK です。Cloudflareプロキシ+WAFルール連動の高度な利用をしている場合のみ「Yes」を検討してください。

STEP

Site key / Secret key を取得

「Create」をクリックすると、「Successfully created Turnstile widget!」 という緑のメッセージとともに Site keySecret key が発行されます。

Successfully created メッセージ+Site key / Secret key のコピー画面
Successfully created メッセージ+Site key / Secret key のコピー画面

各キーボックスの「Click to copy」をクリックすればコピーできます。
後でWordPress側に貼り付けるので、メモ帳やパスワード管理ツールに控えておきましょう。

キーは後からでも再閲覧できます!

画面下部に 「Note: you will be able to view your keys again later.」 と表示されている通り、この画面を閉じても後から再閲覧可能。慌ててコピーしなくて大丈夫です。

ただし Secret key は絶対に他人に見せないように!
パスワード管理ツールへの保管をおすすめします。

「Client side / Server side integration code」って?

キーボックスの上にある2つのリンクは、Cloudflare公式ドキュメントへのショートカットです。
今回のCF7プラグイン経由の手順では使いません(プラグインが内部で連携処理してくれるため)。プラグインを使わず自前でTurnstileを実装したい方向けの参照用リンクです。

ご担当者様の作業はここまでです

Site Key と Secret Key の2つを制作会社(または社内のWP担当者)に共有していただければ、ここから先は技術側で対応できます。

「STEP 3以降は誰かにお願いしたい」という方は、ぜひこちらからご相談ください。

▶︎ ホームページ保健室で相談する


STEP

WordPressにプラグインを導入する

所要5分。

無料プラグイン「Simple CAPTCHA Alternative with Cloudflare Turnstile」(旧名・通称: Simple Cloudflare Turnstile)を入れるだけです。
ここからは技術側の作業になります。

プラグイン名

Simple CAPTCHA Alternative with Cloudflare Turnstile」(旧名・通称: Simple Cloudflare Turnstile)をインストールします。

作者は Elliot Sowersby / RelyWP。WordPress公式リポジトリにある完全無料のプラグインで、10万サイト以上で使われている定番です。Contact Form 7だけでなく、WPForms・Gravity Forms・WooCommerce・Elementor等にも対応しています。

導入手順

プラグイン検索結果(Simple Cloudflare Turnstile)
プラグイン検索結果(Simple Cloudflare Turnstile)
  1. WordPress管理画面 → プラグイン → 新規追加
  2. 検索ボックスに「Simple Cloudflare Turnstile」と入力
  3. 該当プラグイン(作者: Elliot Sowersby / RelyWP)の「今すぐインストール」をクリック
  4. インストール後、「有効化」をクリック
STEP

Site Key / Secret Keyを設定する

所要3分。

STEP 2で取得した2つのキーを、プラグイン設定画面に貼り付けるだけです。

STEP

設定画面へアクセス

WordPress管理画面の 「設定」 → 「Simple CAPTCHA Alternative with Cloudflare Turnstile」 から設定画面を開きます。

STEP

Site Key / Secret Key を貼り付け

  • Site Key:STEP 2で取得したSite Key
  • Secret Key:STEP 2で取得したSecret Key

APIキーの設定」セクションの「サイトキー」「シークレットキー」欄にそれぞれ貼り付けます。まだ「変更を保存」は押さずに次のSTEPへ進んでください。

プラグイン設定画面(Site Key / Secret Key 入力欄)
プラグイン設定画面(Site Key / Secret Key 入力欄)
STEP

「フォームでTurnstileを有効化する」でCF7をON

同じ設定画面の下のほうに「フォームでTurnstileを有効化する」セクションがあります。「Contact Form 7」項目の「すべてのCF7のフォームで有効化」チェックボックスをON にします。

必要に応じて他のフォーム(WordPressログイン・コメント・WooCommerceチェックアウト等)も同時に有効化できます。設定が終わったら「変更を保存」をクリック。

プラグイン設定画面の「フォームでTurnstileを有効化する」セクション(Contact Form 7をON)
「フォームでTurnstileを有効化する」(CF7をON)
STEP

「応答テスト」で動作確認(必須!)

「変更を保存」を押すと、画面に 「もうすぐ完了です…」 ボックスが現れて、「APIキーが更新されました。Turnstileの応答を以下よりテストしてください。」 というメッセージが表示されます。

「もうすぐ完了です…」テスト画面(Turnstileウィジェット表示・APIキー応答テストの案内)
「もうすぐ完了です…」応答テスト画面
⚠️ このテスト、絶対やってください!

プラグイン自身が 「テストが正常に完了するまで、Turnstileはどのフォームにも追加されません」 と書いている通り、ここを通さないと設定したCF7フォームにTurnstileが表示されません。

「保存して終わり」と思って公開ページを見て「あれ、表示されない…」となるのを防ぐために必須のステップです。

  1. 表示された Turnstile ウィジェットのチェックマークを操作(多くは自動完了)
  2. ウィジェット内に緑の 「成功しました!」 が出る
  3. 下の緑ボタン 「応答テスト →」 をクリックして確定
  4. 画面上部に緑文字で 「✅ 成功 ! Turnstile はこれらの API キーで正しく動作します。」 と表示されたらテスト完了
応答テスト成功時の緑メッセージ「成功 ! Turnstile はこれらの API キーで正しく動作します。」
応答テスト成功!「Turnstile はこれらの API キーで正しく動作します」

このメッセージが出れば STEP 4 完了 です。お疲れさまでした!

STEP

CF7フォームに自動表示されているか確認

所要2分。 実は STEP 4 までで設定が完了 していて、お問い合わせフォームを表示すると自動的にTurnstileが出ています。フォーム本文を触る必要はありません。

💡 「Simple Cloudflare Turnstile」の便利な仕様

このプラグインは、設定画面でCF7を有効化すると サイト内のすべてのCF7フォームに自動でTurnstileを差し込む 仕組みです。
フォームごとにショートコードを書き加える必要がありません。

STEP

公開ページのフォームを開く

お問い合わせページなど、CF7フォームを設置してあるページを公開ビューで開いてください。
送信ボタンの近くにTurnstileのウィジェット(緑のチェックマーク)が表示されていればOKです。

STEP

特定のフォームだけ手動で配置したい場合(オプション)

「全CF7フォーム自動」がデフォルトですが、表示位置を細かく制御したい 場合はショートコード


を CF7 のフォーム編集画面で送信ボタンの直前に手動配置することもできます。

<label> お名前
    [text* your-name] </label>

<label> メールアドレス
    [email* your-email] </label>

<label> 件名
    [text* your-subject] </label>

<label> メッセージ本文(任意)
    [textarea your-message] </label>

[cf7-simple-turnstile] ←←←ここに挿入

[submit "送信"]

通常はSTEP 4 の設定だけで完結するので、こだわりがなければ ショートコードは不要 です。

STEP

honeypotを併用する(さらにスパムをブロック)

所要2分。 Turnstileだけでも十分ですが、honeypotを併用すると「ほぼ完全防御」レベルまで持ち上がります。

STEP

honeypotとは

人間には見えない「罠フィールド」を設置して、ボットだけが入力してしまうものを弾く仕組みです。Turnstileと違って完全にバックグラウンドで動作するので、ユーザーには何の影響もありません。

STEP

CF7 Apps(旧Honeypot)プラグインの導入

CF7 Apps – Honeypot, Database, Redirection, Webhook, and Addons for Contact Form 7」(作者: Saad Iqbal / WPExperts、30万サイト以上で稼働)をインストール&有効化。

旧称「Contact Form 7 Honeypot」 がリブランドされて、現在はhoneypot以外にもデータベース保存・リダイレクト・Webhook等のApp集合体になっています。検索する時は「CF7 Apps」または「Contact Form 7 Honeypot」どちらでもOK。

有効化したら、WordPress管理画面 → CF7 Apps ダッシュボードで 「Honeypot App」を有効化 してください。

STEP

ショートコード追加

フォーム本文に以下を追加。

[honeypot website-honeypot]

ボット側からはただのフィールドに見えるので、入力してしまう=スパム判定でブロックされます。

STEP

テスト送信で動作確認

所要5分。 通常送信・意図的な不正送信・運用後ログ確認の3パターンで確認しましょう。

STEP

通常の送信テスト

  1. 公開ページのフォームを開く
  2. Turnstileのウィジェットが表示されているか確認
  3. 全項目入力して「送信」
  4. メールが届くか確認
STEP

Turnstileを意図的に外したテスト

開発者ツール(F12キー)でTurnstileのHTMLを削除してから送信してみる → エラーになればOK。

STEP

しばらく運用してログ確認

導入後、数日〜1週間ほど運用してからスパム到達数を確認します。劇的に減っていれば成功です!


よくあるつまずき・FAQ

Turnstileが表示されない

以下を確認してください。

  • Site Keyの貼り付けが正しいか(コピペミス・空白混入など)
  • ドメイン設定がCloudflare側と一致しているか(www有無、サブドメインの違いなど)
  • ブラウザのコンソール(F12 → Console)にエラーが出ていないか

「Verification failed」とエラーが出る

Secret Keyの設定ミスが多いです。プラグイン設定画面で再度貼り直してみてください。

すでにreCAPTCHAを入れている。両方入れてもいい?

重複は推奨しません。 Turnstileに切り替える方針なら、既存のreCAPTCHA関連の設定(CF7のIntegration設定)は無効化してから進めてください。

クライアントのアカウントで作るべき?制作者のアカウント?

クライアント所有がベストです。 理由は、Cloudflareアカウントはドメインやサーバーと同じ「資産」扱いだから。今後の引き継ぎ・移管を考えると、クライアント側で作成→制作者をMember招待が一番きれいです。

アカウント作成の依頼で注意点は?

私がいつもクライアント様にお願いしているのは以下です。

  • メールアドレスは「会社用の長く使うもの」を指定
  • パスワード管理ツール(1Password等)に登録してもらう
  • 2段階認証を必ず有効化
  • 制作者をMember(管理者権限)として招待

設定が不安。代行してもらえる?

はい、kontaworksではホームページ保健室で1回完結の相談・代行を受け付けています。STEP 1〜2のアカウント作成だけご担当者様にお願いして、その後の設定〜動作確認まで丸ごと代行可能です。


Contact Form 7のスパム対策、まずはTurnstileから

ここまでの流れをまとめます。

  1. Contact Form 7は標準でスパム対策ゼロ → ボットの格好の標的
  2. 対策はCloudflare Turnstileがおすすめ(無料・軽量・プライバシー重視)
  3. アカウントはクライアント所有が原則。制作者をMember招待で運用
  4. 設定は25分前後で完了
  5. honeypot併用でほぼ完全防御に

3,000件以上のサイトを見てきた中で、ここ半年は本当にスパム被害のご相談が増えています。「うちはまだ大丈夫」と思っているうちに、ある日いきなり100件届く——というのが最近のパターン。先回りして対策しておくのが、いちばんラクです。

💬 「うちのフォームもスパムまみれかも…」という方へ

Cloudflare Turnstile導入はもちろん、CF7まわりの設定全般・WordPressのセキュリティ強化まで、こんたホームページ製作所のホームページ保健室で対応しています。
「まず話だけでも聞いてみたい」も大歓迎です!



この記事がよかったらと思ったらぜひ♪
  • URLをコピーしました!
  • URLをコピーしました!

ホームページ保健室

「ホームページがわからなすぎる」とひとりで悩んでいませんか?

法人~個人まで2,500サイトを制作したWebサイト制作技術の専門家が、
ホームページの技術的なこと~運用方法まで、
なんでも解決する『ホームページ保健室』をご利用ください。

\ 何日も悩んでいたことが、一瞬で解決 /

この記事を書いた人

埼玉県川口市で、自営業や起業家のホームページ制作を行っいます。
Web制作会社に7年務めたのち独立。Web制作歴12年、2500件以上のサイト制作に携わり、WordPressサイトを得意とし「作って終わり」にしない、結果が出るサイトであることを大切にしてます。「10人いれば10通りの最適なサイトがある」という信念のもと、型にハマったサイトづくりではなく、マーケティングから考えた、その人のビジネスにとって一番最適なサイトをご提案。技術面で不安のあるWebデザイナーのシステム面のサポートも行っております。

目次