問い合わせフォームスパム対策専門
フォームスパムは、その手法により大きく2つのカテゴリーに分けられます。
一つはボットによる自動的なスパムで、短時間に大量の迷惑メールやスパムメッセージを送りつけるものです。
もう一つは人間によるマニュアルスパムで、特定の目的や意図を持って手動で送信され、特にフォーム営業と呼ばれる営業メールの送付が多く見られます。
このページでは、初心者でも簡単に実装できるHTMLやJavaScriptのテクニックを使った具体的な対策について詳しく解説していきます。
なかなかスパムが減らないとき、自社での対応が難しい場合は一度お問い合せください。
当社の経験豊富なエンジニアが、お困りの状況に合わせたカスタマイズ対策を提供。スパムゼロを目指します。
Webページ上に公開されたメールアドレスは、スクレイピングツールやメールアドレス自動収集ロボットによって簡単に収集されるリスクがあります。
一度収集されたアドレスは、ボットによる迷惑メールやスパムの送信先リストに追加されることが一般的です。
メールアドレスを保護することでロボットによる収集を防止し、スパムの対象となるリスクを最小限に抑えます。
当サイトではメールアドレスを一切掲載しないことを推奨しています。
どのような対策を行なっても、何らかの形でメールアドレスが掲載されている限りロボットに収集されるリスクを無くせないからです。
どうしてもメールアドレスを掲載する必要がある場合は次のような対策を講じてください。
1. HTMLエンコーディング
メールアドレスをHTMLエンティティに変換して表示します。
これによりボットはメールアドレスを容易に収集することができなくなりますが、ブラウザ上では通常のメールアドレスとして表示されます。
2. JavaScriptの利用
JavaScriptを使用してページがロードされる際にメールアドレスを動的に生成・表示します。
JavaScriptを実行できないボットは、この方法で表示されたメールアドレスを収集することができません。
※ 上記2つの対策については https://www.luft.co.jp/cgi/coding.php で簡単に対策コードを生成できるサービスが提供されています。
3. 画像としての表示
メールアドレスを画像として表示することで、ボットによる収集を避けます。
閲覧者がメールアドレスをコピー&ペーストできなくるので、あまり長いメールアドレスに対してはお勧めできません。
ボットは問い合わせフォームページのソースコード上にある全てのフィールドを機械的に入力しようとします。
非表示のフィールドを設置しそれをボットに入力させ、このフィールドが入力されていればそれがボットからのものであると判定します。
この手法をハニーポットと呼びます。
step.1 非表示の入力フィールドの設置
問い合わせフォーム内にブラウザ上では表示されないフィールド (ハニーポットフィールド) を設置します。
下記のようにcssファイルで非表示に設定することも可能です。
#honeypot {
display: none;
}
step.2 フィールドの確認
フォームが送信された際、ハニーポットフィールドに何らかのデータが入力されていればそれはボットによる送信と判断し、メール送信処理を中止します。
CAPTCHAは、閲覧者が人間であることを確認するために設計されたテストです。
このテストは、ボットには簡単に解決できないが、人間には容易に解決可能なテスト (チャレンジ) を提供することを目的としています。
CAPTCHAの導入により、ボットや自動化ツールによる不正なフォーム送信を効果的にブロックできます。
CAPCHAの導入にはサーバ・クライアントの両サイドでの少し複雑な対応が必要となり、ここで解説している他の対策より実装の難易度が上がります。
当サイトでお勧めしているのは、無料で利用できるGoogle reCAPTCHA と、Wordpressでやはり最も普及しているContact Form7と呼ばれるフォーム生成プラグインの組み合わせによる導入です。
この方法であればコーディングを一切せずに問い合わせフォームにCAPTCHAを導入できます。
導入方法はContact Form7の公式解説ページを参考ください。
スパマーはPOST先 (問い合わせフォームデータの送信先) のURLを知っていればそこに直接POSTリクエストを送ることで、入力フォームを経由しなくてもスパムメールを送信することができます。
CSRFと呼ばれる攻撃に対して使われるのと同じ対策で、このように直接POSTリクエスト送るタイプのスパムの対策を行うことができます。
step.1 CSRFトークンの生成
セッション毎にサーバーサイドでランダムな文字列(CSRFトークン)を生成し、セッションに保存します。
step.2 問い合わせフォームにCSRFトークンを埋め込む
hiddenフィールドとしてCSRFトークンを埋め込みます。
step.3 CSRFトークンの照合
フォームが送信された際、送信されてきたトークンとサーバーサイドでセッションに保持しているトークンが一致するかを検証します。
一致しない場合、不正なリクエストとしてメール送信処理を中止します。
実は当社が一番困っていたのはこのマニュアルスパムです。
その内容はサイトの内容とは全く関係のないフォーム営業と呼ばれる営業スパムメールです。
人間が手動で送信しているのでボットによる迷惑メールやスパムと比べ件数は少ないものの、本来お客さまのために設置している問い合わせフォームから頻繁に営業メールを送られるのは非常に不愉快でした。
マニュアルスパム対策の難しさは、実際に人間が入力・送信操作を行っているため本当の問い合わせと区別がつかないところです。
しかし多くのフォーム営業スパムの挙動を見ながら分かったことがあります。
それは「すべての手順を手動で行なっているわけではない」ということです。
この点に注目し、人間が送信するフォーム営業にもある程度効果のある対策を構築することができました。
マニュアルスパム対策の方法を誤ると本来のお客さまからの問い合わせもブロックしてしまう可能性があるため、ボットスパム対策のように画一的な対策ができません。
個別に状況を確認し適切な対策を提案させていただきますので、フォーム営業にお困りの場合はぜひ一度お問い合わせください。
問い合わせフォームスパムとは
運営会社
〒101-0047
東京都千代田区内神田1-15-2 神田オーシャンビル 3F
TEL:050-3646-4060