ある日突然、お問い合わせフォームから英語や中国語のスパムメールが大量に届くようになった。1日に数十件、ひどい場合は数百件の迷惑メールが送信されてくる。こうしたスパムメールの被害は、WordPressサイトを運営する中小企業で頻繁に発生しています。放置すると本物の問い合わせがスパムに埋もれて見落とすリスクがあるだけでなく、サーバーに負荷がかかり、メール配信の信頼性も低下します。この記事では、お問い合わせフォームへのスパムを止める具体的な対策を、効果の高い順に解説します。
スパムメールが届く原因はフォームの仕組みにある
お問い合わせフォームにスパムが届く原因は、フォームの送信先が「公開されている」ためです。Webサイトに設置されたフォームは、ブラウザから誰でもアクセスして送信できます。スパム業者はボット(自動プログラム)を使って、世界中のWebサイトのフォームを自動的に検出し、無差別にスパムメールを送信しています。
WordPressの場合、Contact Form 7やWPFormsなどのプラグインで作成したフォームは、特別な対策をしなければボットからの送信を防ぐことができません。ボットはフォームのHTMLソースコードを読み取り、自動的に各入力欄にテキストを入力して送信するため、サーバー側から見ると人間が操作しているかのように見えます。最近のボットはJavaScript(動的処理)を実行できるものも登場しており、単純なフォーム検証だけでは防ぎきれないケースが増えています。また、クラウドサービスを利用して数千のIPアドレスを使い分けるボットも存在し、IPアドレスの単純なブロックでは対処しきれません。IPAの情報セキュリティ白書でも、Webフォームを狙ったボット攻撃の増加が報告されています(出典 IPA 情報セキュリティ白書2024)。
スパムメールの大半は海外のIPアドレスから送信されます。英語の営業メール、中国語の広告、ロシア語のフィッシングメールなど、国内のビジネスとは無関係な内容ばかりです。中にはマルウェア(ウイルス)を仕込んだURLが本文に含まれているケースもあり、誤ってクリックすると情報漏洩やランサムウェア被害につながる危険性もあります。国内向けのサービスしか提供していない事業者にとって、こうした海外からのスパムは100%不要なものです。しかし、フォームは本来「誰でも問い合わせができる」ことを目的として設置しているため、海外からのアクセスを完全に遮断するのは本末転倒になる場合もあります。重要なのは、正当な問い合わせを妨げずにスパムだけを正確にブロックすることです。
最も効果の高い対策はreCAPTCHAの導入
スパム対策として最も効果が高く、導入も比較的簡単なのがGoogleのreCAPTCHA(リキャプチャ)です。reCAPTCHAは、フォームの送信者が人間かボットかを自動的に判別する仕組みです。Googleが無料で提供しており、世界中のWebサイトで広く採用されています(出典 Google reCAPTCHA)。
reCAPTCHA v3が現在の主流
reCAPTCHAにはバージョン2(画像選択型)とバージョン3(スコアベース型)がありますが、現在推奨されるのはv3です。v3は訪問者に「画像を選んでください」などの操作を求めず、バックグラウンドで自動的にボットかどうかを判定します。訪問者の操作パターン(マウスの動き、ページの滞在時間、クリックの仕方など)を分析し、0.0〜1.0のスコアで人間らしさを評価します。スコアが低い(ボットの可能性が高い)場合にフォームの送信をブロックする仕組みです。
v2の画像選択型は、訪問者に「信号機の画像を選んでください」のような操作を求めるため、ユーザー体験を損なう可能性があります。問い合わせフォームでユーザーに余計な手間をかけるのは、コンバージョン率(問い合わせ率)の低下につながります。せっかくフォームまでたどり着いた見込み客が、画像選択の面倒さで離脱してしまっては本末転倒です。v3であれば訪問者は何も操作する必要がないため、ユーザー体験を損なわずにスパムを防止できます。v3はページの右下に小さなバッジが表示されるだけで、フォームの操作には一切影響しません。
reCAPTCHA v3の導入手順
WordPressでreCAPTCHA v3を導入する手順は以下のとおりです。
- GoogleのreCAPTCHAサイトでサイトキーとシークレットキーを取得する(Googleアカウントが必要)
- WordPress側でreCAPTCHA対応のプラグインを設定する(Contact Form 7はreCAPTCHA v3に標準対応)
- 取得したサイトキーとシークレットキーをプラグインの設定画面に入力する
- フォームのテスト送信を行い、正常に動作することを確認する
Contact Form 7を使用している場合、プラグインの「インテグレーション」メニューからreCAPTCHAのキーを設定するだけで導入が完了します。追加のプラグインは不要です。設定後は、サイトの右下にreCAPTCHAのバッジが表示されていれば正常に動作しています。WPFormsやMW WP Formなど他のフォームプラグインを使用している場合は、それぞれのプラグインがreCAPTCHAに対応しているか確認してください。対応していない場合は、reCAPTCHA専用のプラグインを追加で導入する必要があります。
reCAPTCHAの導入後は、Google reCAPTCHAの管理画面でスパムのブロック状況を確認できます。管理画面では、疑わしいリクエストの数やスコアの分布がグラフで表示されるため、対策がどの程度効果を発揮しているかを視覚的に把握できます。スコアの閾値(しきいち)はデフォルトで0.5に設定されていますが、スパムが多い場合は0.7に引き上げる、逆に正当な問い合わせがブロックされてしまう場合は0.3に下げるなど、サイトの状況に応じて調整が可能です。導入直後は閾値を低めに設定し、管理画面でスコアの分布を1〜2週間ほど確認しながら、自社サイトに最適な値に調整していくのが効果的です。
reCAPTCHAと併用すべき追加の対策
reCAPTCHAだけでスパムの大半は防げますが、最近のボットはreCAPTCHAを回避する技術を備えているものも存在します。より確実に防御するために以下の対策を併用することを推奨します。セキュリティの世界では「多層防御」が基本であり、複数の対策を組み合わせることで、スパムの通過率を限りなくゼロに近づけることができます。
ハニーポット(隠しフィールド)の設置
ハニーポットは、人間には見えないがボットには見える隠し入力欄をフォームに追加する手法です。CSS(デザイン定義)で画面上から見えないように隠した入力欄を1つ追加し、その欄に値が入力されていればボットと判定します。人間はこの欄が見えないため何も入力しませんが、ボットはHTMLソースコードを読み取ってすべての入力欄を自動的に埋めるため、隠し欄に入力があればボットと判定できます。reCAPTCHAのように外部サービスに依存しないため、サイトの表示速度に影響を与えず、訪問者に何の操作も求めません。WordPress向けには「Honeypot for Contact Form 7」などの専用プラグインが提供されており、プラグインをインストールするだけで簡単に導入できます。
日本語を含まない送信をブロックする
国内向けのサービスを提供しているサイトであれば、フォームの送信内容に日本語が含まれていない場合にブロックする設定が有効です。海外からのスパムの大半は英語や中国語で書かれているため、「本文に日本語が1文字も含まれていなければ送信を拒否する」というルールを設定するだけで、大量のスパムを排除できます。Contact Form 7では、バリデーション(入力チェック)のカスタマイズで日本語チェックを追加できます。ただし、海外の顧客からの問い合わせを受け付けている場合は、この設定は適切ではありません。自社のビジネスに合わせて判断してください。
送信回数の制限(レートリミット)
同じIPアドレスから短時間に大量のフォーム送信があった場合にブロックする設定です。通常の問い合わせで同じ人が1分間に10回もフォームを送信することはありません。「同一IPアドレスから5分間に3回以上の送信をブロック」のようなルールを設定することで、ボットによる大量送信を防止できます。セキュリティプラグイン(Wordfenceなど)やサーバーの設定で実装できます。レートリミットはスパム対策だけでなく、サーバーの負荷軽減にも効果があります。大量のフォーム送信が集中するとサーバーのCPUやメモリを消費し、サイト全体の表示速度が低下することがあるため、送信頻度の上限を設定しておくことで安定した運用を維持できます。
サーバー側で海外IPをブロックする方法
上記のフォーム側の対策に加えて、サーバー側で海外のIPアドレスからのアクセスをブロックする方法もあります。フォーム側の対策がアプリケーション層での防御であるのに対し、サーバー側の対策はインフラ層での防御です。両方の層で防御することで、より堅牢なスパム対策が実現できます。国内向けのサービスのみを提供しているサイトであれば、海外IPからの管理画面やフォームへのアクセスを遮断することで、スパムを大幅に減らせます。サーバー側の対策はフォームにたどり着く前の段階でアクセスを遮断するため、サーバーへの負荷自体を軽減できるメリットもあります。
多くのレンタルサーバー(エックスサーバー、さくらのレンタルサーバーなど)では、管理画面から「海外IPアクセス制限」を設定できます。この設定を有効にすると、WordPressの管理画面やXML-RPC(外部からの投稿機能)への海外からのアクセスがブロックされます。XML-RPCは、外部からWordPressの記事を投稿したりファイルをアップロードしたりするためのインターフェースですが、スパムボットや不正ログイン攻撃の入り口としても悪用されます。実際に使用していなければ、XML-RPCへのアクセス自体をブロックしてしまうのが最も安全です。ただし、フォームページ自体へのアクセスをブロックすると、海外からの正当な閲覧もできなくなるため、ブロックの範囲は慎重に設定してください。
WAF(Webアプリケーションファイアウォール)を導入している場合は、WAFのルールでスパム送信のパターンを検知してブロックすることも可能です。WAFはHTTPリクエストの内容を解析し、不正なパターン(SQLインジェクションやクロスサイトスクリプティングなど)を検出して遮断する仕組みです。スパムボットが送信するリクエストには、通常のブラウザからの送信とは異なる特徴が含まれていることが多いため、WAFで効果的にフィルタリングできます。エックスサーバーやConoHa WINGなど、WAFを標準搭載しているレンタルサーバーもあります。WAFの設定はサーバーの管理画面から有効にするだけで、追加の費用は不要な場合がほとんどです。
スパム対策の組み合わせと優先順位
複数の対策を紹介しましたが、すべてを一度に導入する必要はありません。以下の優先順位で段階的に対策を進めてください。
| 優先度 | 対策 | 効果 | 導入の手間 |
|---|---|---|---|
| 最優先 | reCAPTCHA v3の導入 | スパムの90%以上を防止 | 30分程度 |
| 推奨 | ハニーポットの設置 | reCAPTCHAをすり抜けるボットを捕捉 | 15分程度 |
| 推奨 | 日本語チェックの追加 | 海外スパムをほぼ完全にブロック | 30分〜1時間 |
| 任意 | レートリミットの設定 | 大量送信攻撃を防止 | 設定により異なる |
| 任意 | 海外IPブロック | 海外からの不正アクセスを全般的に防止 | サーバー管理画面で設定 |
まずはreCAPTCHA v3を導入するだけで、スパムの大半は止まります。弊社の実績では、reCAPTCHA v3の導入だけで1日50件以上届いていたスパムがゼロになったケースもあります。それでもスパムが届く場合に、ハニーポットや日本語チェックを追加するという段階的なアプローチが効率的です。すべてを一度に導入しようとすると設定ミスのリスクも高まるため、効果を確認しながら一つずつ追加していくのが堅実な進め方です。対策を重ねるほど防御力は上がりますが、フォームの設定が複雑になるため、メンテナンスの手間も増えます。WordPressのアップデートやプラグインの更新でスパム対策の設定が無効になるケースもあるため、定期的な動作確認も忘れないようにしてください。自社で管理できる範囲で対策を選択し、設定に不安がある場合は保守会社に依頼するのが確実です。
最後に
お問い合わせフォームへのスパムは、放置すると本物の問い合わせの見落としやサーバー負荷の増大など、ビジネスに実害を及ぼします。スパムが大量に届く状態が続くと、自社のメールサーバーがスパムの中継元として判定され、正常なメールまで迷惑メールフォルダに振り分けられるリスクもあります。弊社に相談に来る事業者の中にも、スパムに埋もれて実際の顧客からの問い合わせを見落とし、商機を逃したケースがありました。reCAPTCHA v3の導入を最優先とし、必要に応じてハニーポットや日本語チェックを組み合わせることで、スパムをほぼ完全に防止できます。対策は一度正しく設定すれば継続的に効果を発揮するため、スパムが少ないうちから予防的に導入しておくのが得策です。被害が深刻化してからでは、既にスパム業者のリストに登録されてしまい、対策後もしばらくはスパムが届き続ける場合があります。
Web管理では、スパム対策の設定代行も保守の一環として対応しています。reCAPTCHAの導入設定、ハニーポットの追加、日本語チェックのカスタマイズ、サーバー側の海外IPブロック設定など、サイトの状況に合わせた最適な対策を提案・実施します。導入後もスパムの状況をモニタリングし、新たな手口が登場した場合は追加の対策を講じます。「スパムメールが毎日大量に届いて困っている」「reCAPTCHAの設定方法がわからない」「どの対策を優先すべきか判断できない」というご相談も歓迎です。フォームのスパム対策は、正しく設定すれば確実に効果が出る分野です。まずはお気軽にお問い合わせください。

