今、お問い合わせフォーム(メールフォーム)が危ない! 不正アクセスの増加と対処方法

メールフォームへの不正アクセスが急激に増えてきています

この半年~1年の間に、メールフォームを悪用した迷惑メール送信の被害が相次いでいます。これはどのような事かというと、まずメールフォームには、記入した内容を記入者にメールで自動返信する機能が備わっていることが多いです。このとき、メールフォームのメールアドレス欄には記入者自身のアドレスを入力するのが正しい操作ですが、悪意のある第三者がこれを利用し、メールアドレス欄に他人のアドレスを入力して迷惑メールを送信するという攻撃手法です。(参考記事: サイトの「問い合わせフォーム」を悪用する攻撃に警戒を)

少なければ一日に5~10件、多いケースでは一日に数千件の迷惑メールが送信される事がありますが、このような問題が起こると他人に迷惑がかかるだけではなく、サーバが持つIPアドレスの評価が下がったりブラックリストに登録されたりしてしまいます。IPアドレスの評価が下がる、あるいはブラックリストに登録されてしまうと、ちゃんとしたメールまでもが迷惑メールとして判定されたり、そもそもメールを受け取ってもらえないなどの問題が起こってしまいます。

この記事をご覧の方で「そういえば、お問い合わせフォームに最近変なメールが入ってくる」というようなお心当たりがある場合は、異常のサインと考えられますので、これからご紹介する対策を是非ご活用ください。

代表的な対策

メールフォームへの不正アクセス対策は代表的なものがいくつかあります。アクセス元のIPアドレスの遮断、画像認証などのロボット対策の導入、それから、問い合わせ受け付けメールを投稿者アドレスに送信しないというのも方法の一つです。それぞれ、メリット、デメリットがあるので、順に見ていきましょう。

アクセス元のIPアドレスを遮断

アクセスログから、メールフォームにPOSTのアクセスをしたホスト名を特定し、.htaccessなどでアクセス制限をかける方法があります。この方法では、そもそものアクセスから制限をかける事ができるので、接続元が1つ、あるいは数少ないようであれば、メールフォームのプログラムがどうであれ、確実に制限をかけられます。
半面、攻撃者がアクセス元ホストを変更すれば、対策がいたちごっこになってしまいます。事前の対策というよりも、問題が起こった場合の対処の意味合いが強くなると思います。

  • メリット
    • アクセス元からの通信を遮断する事で、プログラムの性質に関係なく対策してしまえる
  • デメリット
    • 事後の対策となる
    • 異変の検知については、フォームから送信された内容すべてに目を通し、不審な投稿がないか日々の確認が必要
    • 攻撃者が接続元ホストを変えてくるような場合、対策がいたちごっこになってしまう

画像認証などのロボット対策の導入

コメントスパムによる攻撃の大半がロボットによる自動書き込みなので、画像認証を入れる事でほとんどのケースは対応できます。また、アクセス制限による方法とは違い、事前に対策できるので運用で頑張る必要がありません。

  • メリット
    • 事前の対策なので、一度設定してしまえば監視の必要がない
  • デメリット
    • ロボットによる攻撃への対策なので、認証をすり抜けられる場合がある
    • 場合によっては、メールフォームのプログラムを修正する必要がある

問い合わせ受け付けメールを投稿者アドレスに送信しない

思い切って、問い合わせ受け付けメールを投稿者アドレスに送信しない設定にするのも方法の一つです。冒頭でも書いた通り、この種の攻撃は悪意のある第三者がメールフォームの自動返信機能を悪用して行われるものなので、メールを送らないように設定してしまえば、第三者にメールアドレスを知られることもありません。

  • メリット
    • 事前に対策可能
    • 同じ手口での被害の心配はない
  • デメリット
    • 問い合わせ受け付けメールが届かない事で、投稿者が正常にメールが送信されていないと判断してしまう可能性がある

ほとんどがWordPress。さらにその大半が、あの有名プラグインによるもの。

現在、世界の1/3のサイトがWordPressでできているといわれていますが、特に日本人が WordPressのサイト上でメールフォームを設けようとすると、ほとんどがContact Form 7というプラグインを使うのではないでしょうか。使いやすく、簡単にメールフォームが作れる事からたくさんの方が使っていると思いますが、人気のあるプラグインだからこそ、攻撃の標的になりやすいとも言えます。https://example.com/contact というようなURLでお問い合わせページを作っている場合は、特に要注意です。最近の攻撃の手法からして、このようなURLが標的にされる傾向があるようです。

しかし、Contact Form 7はもともと、このコメントスパム対策のためのreCAPTCHAを搭載しているので、WordPress管理画面からちょっと設定するだけで対策は十分に行う事が可能です。

reCAPTCHAとは

reCAPTCHAとは、Googleが開発・提供しており、WEBサイトにアクセスしているのが一般のユーザーかロボットかを判別する事が可能なサービスです。コメントスパムなどの不正アクセスの大半がロボットによるものであるため、メールフォームの不正アクセス防止に効果的です。

一般のユーザへは何も表示されませんが、不正なプログラムと判断された場合はアクションを要求されることがあります。

Contact Form 7にreCAPTCHAを設定する方法

Contact Form 7にreCAPTCHAを設定するには、Googleのアカウント側での設定と、WordPress管理画面での操作が必要になります。

reCAPTCHAのキーの取得

reCAPTCHAの設定には、Googleで発行されるreCAPTCHAのキー(サイトキーとシークレットキー)が必要になります。こちらより、Googleのアカウントにログインし、reCAPTCHAのキーを取得してください。

WordPressの管理画面での設定

WordPressの管理画面にログイン後、[お問い合わせ] > [インテグレーション] の画面へと遷移します。

「他のサービスとのインテグレーション」の画面に遷移しますので、reCAPTCHAの「インテグレーションのセットアップ」をクリックします。

サイトキーとシークレットキーを入力する画面が出てきますので、前段で取得したreCAPTCHAのキーを入力し「変更を保存」をクリックしてください。

これで設定は完了です。設定できたら、お問い合わせフォームにアクセスしてみましょう。下記のマークが表示されていれば正常に設定できています。

もしも、対応が難しい場合は

もし、reCAPTCHAのような認証を入れる事も、メールフォームの修正なども難しいような場合、GoogleフォームMicrosoft Formsといったサービスを利用するのも方法の一つです。どちらも簡単にページを作れるだけではなく、メール配信のエラーもなく、集計もクラウド上で完結するので管理が楽です。

インターネット黎明期は、メールによる問い合わせは「mailto:」で行われていた事を考えると、時代の流れと共にウェブサイトの構成も変わるようです。方法は一つではないので、サイトの構成や使うツールも柔軟に変えていきたいものですね。

2023/01/31追記 reCAPTCHAでの対応をご検討の方へ

攻撃手法の変化により、ロボットの攻撃もreCAPTCHAを通過する事例が出てきております。reCAPTCHAの設定だけでは、コメントスパムの対処が不十分となる可能性もございますので、合わせて以下の対応もご検討ください。

  • 自動返信メールの無効化
  • GoogleフォームやMicrosoft Formsなどのサービスへの移行