【実体験】Contact Form 7にCloudflare Turnstileを設定してスパム対策した手順

Contact Form 7のお問い合わせフォームをCloudflare Turnstileの盾でスパムから守るイメージ Web制作
Contact Form 7にCloudflare Turnstileを設定してスパム対策

お問い合わせフォームが出来ました!……と喜んだのも束の間、すぐに気になったことがありました。

「これ、スパムメールが大量に届いたらどうしよう?」

WordPressのお問い合わせフォームは外部から誰でも送信できるため、何も対策していない状態では少し不安です。そこで今回は、Contact Form 7にCloudflare Turnstileを設定して、ボットによる迷惑な送信を防ぐ対策を行いました。

設定前は「また別のプラグインが必要なのかな?」と思っていましたが、現在のContact Form 7にはTurnstileとの連携機能が標準で用意されています。コードを書く必要もなく、思っていたより簡単に設定できました!

この記事で分かること
・Cloudflare Turnstileとは何か
・Contact Form 7でTurnstileを使うメリット
・サイトキーとシークレットキーの取得方法
・WordPressへの設定手順
・設定後に確認するポイント

Cloudflare Turnstileとは?

Cloudflare Turnstileは、お問い合わせフォームを送信しているのが人間か、自動送信を行うボットかを判定する仕組みです。

よくある「信号機の画像をすべて選んでください」といった操作を毎回求めるのではなく、通常は裏側で判定してくれます。読者の負担を増やしにくいところも良いですね。

Contact Form 7の公式サイトでも、Turnstileはスパムボットからフォームを保護する連携機能として案内されています。詳しくはContact Form 7公式のTurnstile連携ページを確認できます。

Turnstileの大まかな仕組み

  1. 読者がお問い合わせフォームを開く
  2. Turnstileがブラウザー上で判定を行う
  3. 送信時にWordPress側で結果を確認する
  4. 正常な内容だけがメールとして送信される
お問い合わせフォームからTurnstileによる判定を経て正常なメールだけが届く仕組みの図解
Turnstileがフォーム送信を判定し、ボットによるスパムをブロックする流れ

私がTurnstileを選んだ理由

スパム対策にはAkismetやGoogle reCAPTCHAなど、いくつかの選択肢があります。その中で今回はTurnstileを選びました。

  • Contact Form 7に連携機能が標準搭載されている
  • 新しいWordPressプラグインを追加しなくてよい
  • 無料で利用できる
  • 読者に面倒な画像選択を求めにくい
  • コードを書かずに設定できる

プラグインを増やしすぎると、更新や相性の確認も増えてしまいます。標準機能として連携できるなら、そのほうが管理しやすそうです。これは良い感じですね!

設定前に準備するもの

  • Contact Form 7を設置したWordPressサイト
  • Cloudflareのアカウント
  • Turnstileを設定するサイトのドメイン

私の場合は、すでにContact Form 7でお問い合わせページを作成していたため、Cloudflare側でキーを取得するところから始めました。

手順1:CloudflareでTurnstileのウィジェットを作成する

最初にCloudflareへログインし、Turnstileの管理画面を開きます。そこで新しいウィジェットを追加しました。

  1. CloudflareのダッシュボードでTurnstileを開く
  2. ウィジェットを追加を選択する
  3. 分かりやすいウィジェット名を入力する
  4. 対象ホスト名に自分のドメインを登録する
  5. ウィジェットモードを選んで作成する

ウィジェットモードは、Cloudflareが状況に応じて判定方法を調整する「Managed(管理対象)」を選びました。公式の作成手順はCloudflare Turnstileのドキュメントでも確認できます。

ホスト名の入力例:disart-f.jp
通常は「https://」やページ末尾の「/」を付けず、ドメインを登録します。

手順2:サイトキーとシークレットキーを取得する

ウィジェットを作成すると、次の2種類のキーが発行されます。

キー役割取り扱い
サイトキーフォームにTurnstileを表示するための公開用識別子公開ページで使われる
シークレットキー判定結果をサーバー側で確認するための秘密情報外部へ公開しない

ここは少し緊張しました。特にシークレットキーをスクリーンショットや記事へ載せないように注意が必要です。Cloudflareも、シークレットキーは安全に保管し、公開しないよう案内しています。

手順3:Contact Form 7へキーを登録する

続いてWordPressの管理画面へ戻り、Contact Form 7とTurnstileを連携します。

  1. WordPress管理画面の「お問い合わせ」を開く
  2. 「インテグレーション」を選択する
  3. Turnstile欄の「インテグレーションのセットアップ」を開く
  4. サイトキーを入力する
  5. シークレットキーを入力する
  6. 「変更を保存」を押す

これだけでした。フォームのHTMLを編集したり、PHPコードを書いたりする必要はありません。「もう出来たの?」というくらい簡単で、無事に行けましたね!

手順4:お問い合わせページで動作を確認する

設定を保存したら、実際のお問い合わせページを開いて確認します。

  • お問い合わせフォームがこれまでどおり表示されるか
  • Turnstileの判定部分がフォーム内に追加されているか
  • 入力欄や送信ボタンのレイアウトが崩れていないか
  • テスト送信したメールが正常に届くか

私のサイトでも公開画面を確認したところ、フォーム内にTurnstileの判定要素が追加されていました。シークレットキーが公開画面へ表示されていないことも確認できました。

最後は自分でテスト送信を行いましょう。
ウィジェットが表示されていても、メール設定に問題がある可能性はあります。送信完了の表示と、受信メールの両方を確認すると安心です。

設定するときに気を付けたいこと

シークレットキーを公開しない

サイトキーは公開ページで使用されるものですが、シークレットキーはサーバー側で利用する秘密情報です。ブログ記事の画像、SNS、チャットなどへ貼り付けないようにしましょう。

登録するドメインを間違えない

Cloudflare側で登録したホスト名と、実際にフォームを設置しているサイトのドメインが一致しているか確認します。テスト環境やサブドメインでも使う場合は、それぞれの環境を意識して設定する必要があります。

対策後も完全にゼロになるとは限らない

Turnstileはボット対策として有効ですが、すべての迷惑メールを100%防げると断言はできません。もしスパムが届く場合は、Contact Form 7の禁止用語リストやAkismetなどを追加で検討します。

よくある疑問

追加のWordPressプラグインは必要?

今回の方法では必要ありません。Contact Form 7のインテグレーション画面からTurnstileを設定できます。

Cloudflareでサイト全体を管理していなくても使える?

はい。Cloudflareの公式ドキュメントでは、TurnstileはサイトがCloudflareのネットワークを経由していなくても利用できる独立したサービスとして案内されています。

Turnstileが目立たないけれど動いている?

設定したモードや判定状況によって、読者へ求められる操作は変わります。まずはフォーム内のTurnstile要素と、実際のテスト送信を確認しましょう。

まとめ:お問い合わせフォームを作ったらスパム対策も忘れずに

今回は、Contact Form 7にCloudflare Turnstileを設定して、お問い合わせフォームのスパム対策を行いました。

  • 追加プラグインなしで設定できた
  • Cloudflareで2種類のキーを取得した
  • Contact Form 7のインテグレーション画面へ登録した
  • 公開ページとテスト送信で動作を確認する
  • シークレットキーは絶対に公開しない

お問い合わせページが出来た直後は「スパムが来たら怖いな……」と感じましたが、想像よりも簡単に対策できました。これで少し安心して、思う存分ブログを投稿していけそうです!

ChatGPTとWordPressを連携して記事の下書きを作る方法は、こちらの「ChatGPTにWordPressブログを書かせる方法」で紹介しています。

コメント

タイトルとURLをコピーしました