メインコンテンツに移動

お問い合わせフォームのスパム対策|Cloudflare Turnstileの導入方法と注意点

お問い合わせフォームのスパム対策|Cloudflare Turnstileの導入方法と注意点

金風株式会社では、自社サイトのお問い合わせフォームに、Cloudflareが提供するスパム対策サービス「Cloudflare Turnstile(ターンスタイル)」を導入しました。

お問い合わせフォームは、お客様からの相談や問い合わせを受け付ける大切な窓口です。しかし、Webサイトを公開していると、プログラムによる自動送信(ボット)によって、迷惑なメッセージが大量に送られてくることがあります。

こうしたスパム対策の一つが、Cloudflare Turnstileです。

Turnstileは、DNSをCloudflareに切り替えなくても導入でき、フォームを送信する際のトークンをサーバー側で検証できることが特徴です。

この記事では、導入した背景や仕組み、メリット、導入時の注意点を図解とともに解説します。

お問い合わせフォームに届くスパム送信とは?

Webサイトのお問い合わせフォームには、人間が入力したものだけでなく、プログラムによる自動送信が届くことがあります。

例えば、次のようなものです。

  • 広告や不審なWebサイトへの誘導を目的とした迷惑メッセージ
  • 営業文面などを自動送信するスパム
  • フォームの動作や入力処理を調べるための大量のリクエスト
  • 大量送信によってサーバーや担当者の負担を増やす行為

スパムが増えると、本来のお問い合わせを見落としたり、通知メールの確認に時間がかかったりする可能性があります。

そのため、お問い合わせフォームでは、入力内容の検証だけでなく、自動送信を抑制するための対策も重要です。

 

これまでのスパム対策と残っていた課題

当社のお問い合わせフォームでは、Turnstileを導入する前から、次のような対策を実施していました。

ハニーポットによる対策

人間の利用者には見えない入力欄を設け、その欄に値が入力されていた場合に、自動送信の可能性が高いと判断する方法です。

送信までにかかった時間の確認

フォームを表示してから送信するまでの時間を確認し、極端に短い時間で送信されたリクエストを拒否する方法です。

これらはスパム対策として活用できますが、単独では十分とは限りません。

例えば、フォームの画面を経由せず、送信先のプログラムに直接リクエストを送るボットがあります。この場合、ブラウザ上で行う確認だけでは対策をすり抜けられる可能性があります。

そこで当社では、従来の対策を残しながら、送信を受け取るサーバー側でも検証できる仕組みとして、Cloudflare Turnstileを導入しました。

Turnstile導入前と導入後の比較。導入前はブラウザの中だけで確認していたため、ブラウザを通らずに直接送信するボットは受付されてしまっていた。導入後はサーバー側でもTurnstileのトークンを照合するため、ボットの直接送信は拒否される

導入前はブラウザ側の確認に依存していた部分がありましたが、導入後はサーバー側でもトークンを検証し、検証に成功したリクエストだけを受け付ける構成にしています。

 

Cloudflare Turnstileとは?

Cloudflare Turnstileは、Webサイトのフォームやログイン画面などで、ボットによる自動操作を検出・抑制するためのサービスです。従来の画像認証(CAPTCHA)の代替手段として利用できます。

一般的な画像認証では、表示された画像から信号機や自動車などを選択する操作が求められることがあります。

一方、Turnstileでは、ブラウザ上で検証を行い、多くの場合は利用者が複雑な画像選択をしなくても処理を進められます。ただし、設定や判定状況によっては、追加の操作が必要になることがあります。

Cloudflare Turnstileの主な特徴

項目内容
料金無料プランあり
DNSの変更Turnstileの利用自体には不要
利用者の操作多くの場合、複雑な画像選択は不要
対応する用途お問い合わせフォーム、登録画面、ログイン画面など
サーバー側の検証Siteverify APIによるトークン検証が必須
既存の対策との併用ハニーポットやレート制限などと組み合わせ可能

無料プランのウィジェット数や利用条件には規定があります。導入時には、最新の公式プラン情報を確認してください。

 

Cloudflare Turnstileの仕組み

Turnstileは、ブラウザ側での検証と、サーバー側でのトークン検証を組み合わせて動作します。

Turnstileの仕組み。フォームを開くとCloudflareが人間かを判定してトークンを発行し、送信時にトークンを受け取った自社サーバーが、シークレットキーを使ってCloudflareにトークンを照合し、合格なら受付、不合格なら拒否する

基本的な流れは次のとおりです。

  1. 利用者が、お問い合わせフォームを開きます。
  2. Turnstileのウィジェットが読み込まれ、ブラウザ上で検証が行われます。
  3. 検証が完了すると、トークンと呼ばれる文字列が発行されます。
  4. 利用者がフォームを送信すると、入力内容とトークンが自社サーバーに届きます。
  5. 自社サーバーは、秘密の鍵であるシークレットキーを使用し、CloudflareのSiteverify APIにトークンの検証を依頼します。
  6. 検証結果を確認し、成功した場合に限って、後続のお問い合わせ処理を実行します。

ここで重要なのは、トークンが送信されていることだけではなく、サーバー側でトークンの検証結果を確認することです。

トークンは発行から5分で有効期限が切れ、1回しか検証に使用できません。期限切れや再利用されたトークンは拒否されます。

また、トークンの検証に成功したことは、すべての不正行為を防げることを意味するものではありません。入力値の検証やレート制限など、フォーム自体に必要な対策も引き続き実施する必要があります。

 

Cloudflare Turnstileを導入するメリット

① ブラウザを経由しない直接送信にも対策できる

Turnstileの大きなメリットは、サーバー側で検証できることです。

フォームの画面を使わずに送信先へ直接リクエストを送っても、有効なトークンがなければ、サーバー側で拒否できます。

ただし、Turnstileはあらゆるボットを完全に排除するものではありません。ほかの対策と組み合わせて、自動送信のリスクを低減することが重要です。

② お問い合わせをする人の負担を抑えやすい

画像を何枚も選ぶ認証と比べ、利用者が複雑な操作を求められる場面を減らせます。

お問い合わせフォームでは、入力の手間や送信時の負担が増えると、途中で離脱される可能性もあります。

利用者の利便性とスパム対策を両立しやすいことは、Turnstileを導入するメリットの一つです。

③ DNSを変更せずに導入できる

Turnstileは、CloudflareのDNSやプロキシを利用していないWebサイトにも導入できます。

そのため、現在のレンタルサーバーやDNS、メールの構成を維持しながら、お問い合わせフォームに検証機能を追加できます。

当社でも、既存のサイト構成を大きく変更することなく、フォームのスパム対策を強化できる点を重視しました。

なお、Turnstileの導入自体にDNSの切り替えは必要ありませんが、実際の組み込みにはフォームやサーバー側のプログラムの修正が必要です。

④ 既存のスパム対策と併用できる

Turnstileを導入しても、ハニーポットや送信間隔の確認を取り除く必要はありません。

例えば、次のような対策を組み合わせられます。

  • ハニーポットによる自動入力の検出
  • 送信間隔の確認
  • Turnstileのトークン検証
  • 入力値の形式や文字数の検証
  • IPアドレスや利用状況に応じたレート制限

複数の対策を組み合わせることで、特定の対策だけでは検出できないリクエストにも対応しやすくなります。

⑤ お問い合わせフォーム以外にも利用できる

Turnstileは、お問い合わせフォームのほか、会員登録やログインなどの画面にも利用できます。

例えば、ログイン時の自動化された試行を抑制する目的で導入することもできます。

ただし、パスワードの総当たり攻撃への対策では、Turnstileだけに頼るのではなく、レート制限、多要素認証、異常なログインの監視なども必要です。

 

Cloudflare Turnstileを導入するときの注意点

① ウィジェットを表示するだけでは不十分

Turnstileを導入する際に、特に注意したいのがサーバー側の検証です。

Webページにウィジェットを表示し、ブラウザ上でトークンを取得するだけでは、対策は完成しません。

サーバー側でSiteverify APIを呼び出し、検証結果が成功であることを確認したうえで、お問い合わせの処理を進める必要があります。

トークンが存在しない場合や、検証に失敗した場合、Cloudflareとの通信に問題が発生した場合などは、原則として送信を受け付けない設計にします。

② サイトキーとシークレットキーを適切に管理する

Turnstileでは、役割の異なる2つのキーを使用します。

  • サイトキー:Webページに設置する公開用のキー
  • シークレットキー:サーバー側でトークンを検証するための秘密のキー

シークレットキーは公開してはいけません。

環境変数や適切な設定ファイルなどを利用し、公開ディレクトリや公開リポジトリに含まれないように管理します。誤って公開した場合は、キーの変更などの対応を検討してください。

③ トークンの有効期限と再送信に対応する

Turnstileのトークンは、発行から5分で有効期限が切れ、1回しか使用できません。

利用者が入力に時間をかけた場合や、送信エラー後に再送信する場合、トークンが期限切れになっている可能性があります。

そのため、必要に応じてウィジェットをリセットし、新しいトークンを取得できるようにしておくと、利用者が送信できなくなる状況を減らせます。

④ 導入前後に動作テストを行う

Turnstileを導入したら、正常なお問い合わせが送信できることだけでなく、トークンがない場合や無効な場合に拒否されることも確認します。

Cloudflareではテスト用のキーも用意されています。開発環境などで動作を確認し、本番環境では本番用のキーを使用してください。

導入後も、正常な送信ができるか、エラーが発生していないかを継続的に確認することが大切です。

⑤ プライバシーポリシーを確認する

Turnstileは外部サービスを利用して検証を行うため、利用方法に応じて、プライバシーポリシーなどの記載を確認しましょう。

特に、利用するウィジェットのモードやCloudflareの適用条件に応じて、必要な説明やプライバシー関連の記載が異なる場合があります。

実際の実装と利用条件を確認したうえで、適切に対応してください。

 

Cloudflareの機能は必要な部分だけ利用できる

Cloudflareには、DNSやプロキシを利用してWebサイト全体の通信を保護する方法もあります。

一方、Turnstileは、CloudflareのDNSに切り替えなくても単独で利用できるサービスです。

Webサイト全体の構成を変更することが難しい場合でも、フォームなど必要な部分から対策を追加できます。

もちろん、TurnstileだけでWebサイト全体のセキュリティを確保できるわけではありません。サイトの構成や目的に応じて、必要な対策を選ぶことが重要です。

 

まとめ:お問い合わせフォームはサーバー側の検証も重要

Cloudflare Turnstileは、お問い合わせフォームへのスパム送信を抑制するための選択肢の一つです。

導入にあたって押さえておきたいポイントは、次のとおりです。

  • DNSをCloudflareに切り替えなくても利用できる
  • ブラウザ側でトークンを取得するだけでは不十分
  • サーバー側でSiteverify APIによる検証を行う
  • トークンの有効期限や再利用に注意する
  • ハニーポットやレート制限など、ほかの対策と組み合わせる

お問い合わせフォームは、お客様との大切な接点です。スパム対策を行う際には、迷惑な送信を抑えるだけでなく、正規のお問い合わせを確実に受け付けられる構成にすることも重要です。

金風株式会社では、Webサイトの制作だけでなく、公開後の運用やセキュリティ対策も重視しています。

自社サイトのお問い合わせフォームやセキュリティ対策に不安がある場合は、Webサイトのセキュリティ診断もご相談ください。

あわせて読みたい

 

よくある質問

Q. Cloudflare Turnstileは無料で使えますか?

はい。無料プランが用意されています。無料プランにはウィジェット数などの条件があるため、導入するサイトの数や利用方法に応じて、公式のプラン情報を確認してください。

Q. DNSをCloudflareに切り替える必要はありますか?

いいえ。Turnstileは、CloudflareのDNSやプロキシを利用していないWebサイトにも導入できます。既存のDNSやメールの構成を維持したまま利用できます。

Q. フォームを利用するたびにチェック操作が必要ですか?

必ずしも必要ではありません。利用するウィジェットの種類や設定、判定状況によって動作は異なります。利用者に追加の操作を求めずに利用できる構成もあります。

Q. WordPressのお問い合わせフォームにも使えますか?

はい。WordPressのお問い合わせフォームにも組み込めます。ただし、プラグインや実装方法によって対応状況が異なります。導入後は、サーバー側でトークンが検証されていることを確認してください。

Q. Turnstileを導入すればスパムを完全に防げますか?

いいえ。Turnstileはボット対策を支援する仕組みであり、すべてのスパムや不正な送信を完全に防ぐものではありません。入力値の検証、レート制限、ハニーポットなどを組み合わせ、送信状況を継続的に確認することが重要です。

最新のお役立ち情報はメルマガでもお届けしています