スパムボット

問い合わせフォームのセキュリティ対策を方式別に解説


問い合わせフォームは、お客様からの大切な声を受け取る窓口です。しかし、対策を怠るとスパムメールが大量に届いたり、個人情報が漏えいしたりするリスクがあります。
一方で、どのような対策(予防策)を講じればよいかが明確になっていないケースも多いでしょう。

この記事では、問い合わせフォームの作り方(設置方法)を3種類の方式に分け、それぞれの特徴とセキュリティ課題、具体的な対策を分かりやすく解説します。

問い合わせフォームの方式

問い合わせフォームは、作り方によって大きく3つの方式に分けられます。方式ごとにメリット・デメリットがあるため、全体像を把握しておくことが重要です。

1. オリジナルのフォーム

HTMLとPHP・JavaScriptなどを使って、ゼロから作る方式です。デザインや動作を細かくコントロールできる反面、セキュリティ対策もすべて自分で実装する必要があります。
技術力がある制作者向けで、小規模なサイトから本格的な業務システムまで幅広く使われています。

2. フォーム作成ツール

Googleフォームをはじめとする専用ツールを使う方式です。ブラウザ上で簡単に作れ、集計やグラフ化も行えるのが魅力。プログラミングの知識がなくても導入でき、社内アンケートや簡易的なお問い合わせに向いています。
一方で、デザインの自由度やデータの管理権限は制限されます。

3. CMSのプラグイン

WordPressなどのCMSに専用のプラグインを入れて作る方式です。Contact Form 7やJetpackのフォームブロックが代表例です。
WordPressサイトに自然に溶け込み、比較的簡単に導入できるのが特徴。プラグインの機能を活かせば、通知メールや確認画面などもスムーズに設定できます。

各方式のメリット・デメリット一覧

フォームの方式メリットデメリット
オリジナルのフォームデザインや機能を自由にカスタマイズできる。外部サービスに依存せず、どんなサイトにも設置可能開発・保守の手間とコストがかかる。セキュリティ対策をすべて自分で行う必要がある
フォーム作成ツール誰でも簡単に作れる。集計や管理が楽。Googleなどのセキュリティ基盤を利用できるデザインや動作のカスタマイズが限られる。データが外部に残る。高度なボット対策が難しい
CMSのプラグインCMSの機能に統合しやすい。拡張性が高く、情報も豊富。比較的短時間で導入可能CMS以外のサイトでは使えない。プラグインの更新を怠ると脆弱性のリスクが高まる。設定ミスでセキュリティが低下する可能性あり

選び方のポイント

個人情報を本格的に扱う商用サイトや、継続的に運用する公式サイトなら「CMSのプラグイン」が現実的です。とくにWordPressを使っている場合は、プラグインと適切な対策の組み合わせがおすすめ。
社内アンケートや簡易的な受付ならGoogleフォームで十分です。
完全にオリジナルで作りたい場合は、セキュリティ実装を重視して制作しましょう。

問い合わせフォームの方式別セキュリティ課題と対策

入力フォームのイメージ

問い合わせフォームの方式によって「どこが弱点になりやすいか」が異なります。
以下にそれぞれの課題と、すぐに取り入れられる対策を具体的に示します。

1. オリジナルのフォーム

HTML・PHP・JavaScriptを使って自作した場合、自由度が高い反面、ボット対策や入力チェックなどをしっかり実装しないと、フォームのURLが見つかった時点でスパムが届きやすくなります。
WordPressのように「決まった場所」を狙われるわけではありませんが、対策を後回しにすると結果的に脆弱になりやすい点に注意が必要です。

セキュリティが弱くなるポイント

自作フォームでよくある弱点は次のとおりです。

まず、ボット対策が何も入っていないと、スパムが自動で大量に送られてきます。
次に、入力された内容をそのまま処理してしまうと、XSS(悪意のあるスクリプトを埋め込む攻撃)やメールヘッダーを操作されるインジェクション攻撃を受けやすくなるでしょう。

また、送信回数の制限がないと、短時間に大量のリクエストが来てサーバーに負担がかかる場合もあります。これらの対策を「後から考えよう」としてしまうと、大きな修正が必要になります。

対策方法

一般的な方法として、入力内容のチェック(バリデーション)と、危険な文字を無害化する処理(サニタイズ)を必ず入れましょう。
送信データをサーバー側でも確認することが重要です。あわせて、送信回数を制限する仕組み(レート制限)も有効です。

上記の対策のほか、ボット対策には手軽で効果的なCloudflare Turnstileの導入がおすすめです。
Turnstileは「人間かどうか」を判定する仕組みで、ユーザーに画像を選ぶような手間をかけさせません。
無料で使え、プライバシーにも配慮されているため、自作フォームにも比較的簡単に組み込めます。サイトキーとシークレットキーを取得し、フォームにウィジェットを追加するだけで基本的なボット対策が完成します。

2. フォーム作成ツール

Googleフォームを使った場合、Google側のセキュリティ基盤を利用できるため、サーバーを自分で守る必要が少ないのが特徴です。ただし「完全に安全」というわけではなく、設定ミスや運用面で注意が必要です。

セキュリティが弱くなるポイント

Googleフォーム自体の技術的な脆弱性は少ないものの、次のような点が弱点になりやすいといえます。
たとえば公開範囲の設定を誤ると、回答内容が意図しない人に見られてしまう可能性があります。また、スパム対策機能が限定的なため、意味のない文字列や営業文が大量に届くことがあります。

データがGoogleのサーバーに残る点も、社内の情報管理ポリシーによっては問題になる場合があります。さらに、高度なボット対策や細かいカスタマイズは難しいため、攻撃の手口が巧妙化すると対応が追いつきにくくなるでしょう。

対策方法

公開設定を「回答者を限定する」か「1回だけ回答可能にする」など、必要最小限に絞りましょう。
メールアドレスの収集を有効にして、回答者をある程度特定できるようにするのも有効です。スパムが気になる場合は、回答の受付を一時停止する機能を活用しましょう。

Googleフォーム単体で高度なボット対策は難しいため、重要な問い合わせには別の方式(WordPressのプラグインなど)に切り替えることを検討するのも一つの方法です。簡易的な用途に限定して使うのが、現実的な運用方法といえます。

3. CMSのプラグイン

WordPressのプラグイン(Contact Form 7やJetpackのフォームブロック)を使った場合、導入のしやすさと拡張性のバランスがよいのが特徴です。
ただし、プラグイン特有の注意点を押さえておく必要があります。

セキュリティが弱くなるポイント

最も多いのが「プラグインの更新を怠る」ことです。古いバージョンには既知の脆弱性が残っていることがあり、そこを狙われます。

また、設定画面で不要な機能を有効にしたままにしておくと、攻撃の入り口が増えるため注意が必要です。ファイル添付機能を有効にすると、悪意のあるファイルがアップロードされるリスクがあります。
さらに、スパム対策を講じていないと、ボットによる大量送信を許してしまいます。

対策方法

プラグインとWordPress本体を常に最新の状態に保つことが基本です。
更新通知が来たら、できるだけ早めに対応しましょう。不要な機能(とくにファイル添付)は無効にしておくのが安全です。

スパム対策として、Cloudflare Turnstileの利用をおすすめします。Contact Form 7は公式でTurnstileに対応しており、管理画面の「お問い合わせ → インテグレーション」から簡単に設定できます。
reCAPTCHAを使っていた方も、無料で負担の少ないTurnstileへの切り替えを検討する価値があります。Jetpackのフォームを使う場合も、合わせてTurnstileやハニーポット(後述)などの対策を入れると安心です。

問い合わせフォームの一般的な対策手法

ノートPCに表示される入力フォーム

フォームの方式を問わず、共通して取り入れたい対策をまとめました。
技術的な内容が多いものの、できるだけ分かりやすく解説しています。

通信の暗号化(SSL)

フォームから送られる情報を暗号化し、第三者に盗み見されないようにする仕組みです。
サイト全体をSSL化(HTTPS化)することで実現するため、多くのサイトではフォームのために改めて対応する必要はないでしょう。

未対応の場合は、WebサイトのSSL化を最優先で実施してください。

スパムボット対策

ボットによる自動送信を防ぐための対策です。代表的なものを3つ紹介します。

Cloudflare Turnstile

Cloudflare Turnstileは、ユーザーにほとんど負担をかけずに「人間かどうか」を判別する仕組みです。画像を選ばせる従来の方法より快適で、無料で使えます。
Contact Form 7など主要プラグインで公式対応が進んでいます。

MW WP Formについては弊社「Webの相談所」がサポートを引き継いでいますが、「Cloudflare Turnstile for MW WP Form」を有償提供しているため、ボット対策が可能です。

reCAPTCHA/画像認証

reCAPTCHAや画像認証は、昔から使われてきた方法です。効果はありますが、ユーザーに「信号機の画像を選んでください」のような作業を強いるため、離脱の原因になることがあります。現在はTurnstileの方がおすすめです。

ハニーポット

ハニーポットは、「ボットをおびき寄せる罠」のようなシンプルな仕組みです。
フォームの中に、人間には見えない入力欄をわざと用意します。ボットはすべての欄に機械的に入力するため、この見えない欄に何か入っていたら「ボットだ」と判断して弾きます。
ユーザーには何も表示されず、負担もゼロです。自作フォームや一部のプラグインで比較的簡単に実装でき、他の対策と組み合わせると効果を高められるでしょう。

ファイル添付の回避

ファイルを添付できると便利ですが、ウイルスや不正なファイルが送られてくるリスクがあります。とくに必要がない場合は、添付欄を設けないのが最も安全です。

どうしても必要な場合は、受け付けるファイルの種類(拡張子)を厳しく制限して容量の上限を設け、保存場所をWebから直接アクセスできない場所にするなどの対策をセットで行いましょう。

定期的なバックアップとアップデート

万が一攻撃を受けた場合に備え、定期的にバックアップを取っておくことが大切です。
WordPressの場合は、プラグインや本体のアップデートを怠らないことも重要です。更新にはセキュリティの修正が含まれていることが多く、放置すると既知の弱点を突かれる可能性があります。

WAFの導入

WAF(Web Application Firewall)は、Webサイトへの攻撃を自動で検知・ブロックする仕組みです。
サーバー側やCloudflareなどのサービスで導入できますが、一度レンタルサーバーの管理画面で有効になっていることを確認してください。多くの主要サーバーでは標準またはオプションで利用可能です。
WAFはフォームだけでなく、サイト全体のセキュリティを底上げしたい場合に有効です。

入力値のバリデーションと無害化

とくに自作フォームで重要な対策です。
バリデーションは「正しい形式で入力されているか」を確認する処理で、メールアドレスの形式チェックなどが挙げられます。
無害化(サニタイズ)は「危険な文字を取り除く・変換する」処理です。

これら2つをサーバー側で必ず行うことで、XSSなどの攻撃を大幅に減らせます。プラグインを使う場合は信頼できるものを選び、設定を確認してください。

まとめ

問い合わせフォームのセキュリティは、「方式の特徴を理解したうえで、必要な対策を重ねる」ことが重要です。
オリジナルなら自分で実装する範囲が広く、フォーム作成ツールなら運用面の注意が中心となります。CMSのプラグインなら更新と設定が鍵です。

とくにWordPressサイトの場合、プラグインの選択と継続的な保守が最も重要です。Contact Form 7などの定番プラグインを使い、Turnstileなどのボット対策をして定期的に更新を行うだけでも、かなりのリスクを減らせます。

自社で対応が難しい場合や、どこから手をつければいいか分からない場合は、専門家に相談することをおすすめします。Webの相談所でも、ケースに応じたアドバイスが可能です。

関連記事