フォームスパム対策の実務ガイド(reCAPTCHA・ハニーポット・IP制御)
問い合わせフォームや資料請求フォームを公開すると、ほぼ必ずついて回るのがスパム投稿の問題です。
海外からの大量投稿、機械的な広告文、同じメッセージの連投など、放置すると担当者の確認コストが膨らみます。
一方で、スパム対策を強くしすぎると、今度は正規のユーザーが送信しづらくなり、機会損失につながります。
このページでは、実務で使いやすいフォームスパム対策を、「フロント側」「サーバー側」「運用」の 3 層に分けて整理します。
この記事の前提
・BtoB サイト・多店舗サイト・医療機関・学校等の問い合わせ/予約フォームを想定
・HTML フォーム+サーバーサイド(PHP 等)で実装しているケースを前提
・できる限りユーザー負担を増やさずにスパム投稿を減らす
1. スパム投稿のパターンを把握する
対策を考える前に、自社フォームにどのタイプのスパムが多いかを把握しておくと、無駄な対策を減らせます。
- 機械的なボット投稿(短時間に大量投稿、海外IPが多い)
- 半自動ツールによる投稿(人がツールを使って繰り返し送信)
- マニュアル投稿(人が手で広告や迷惑投稿を送る)
多くのサイトでは、最初の 2 つを主に対策し、3 つ目は「ある程度は割り切る」という設計になります。
2. フロント側の対策:ハニーポットと簡易チェック
2-1. ハニーポット(隠しフィールド)
代表的な手法が、ユーザーには見えないダミー入力欄(ハニーポット)を用意しておき、
そこに値が入っている送信をスパムとしてはじく方法です。
- CSS で非表示にしたテキストフィールドをフォーム内に設置
- 人間は入力しないが、単純なボットは全フィールドを埋めることが多い
実装が軽く、ユーザー体験を悪化させにくい割に、機械的なスパムには一定の効果があります。
2-2. JavaScript を利用した簡易チェック
- フォーム表示から送信までの時間が極端に短い場合は疑わしい(例:2秒未満)
- 特定の隠しフィールドに、JavaScript でのみ設定されるトークンを入れる
完全な防御にはなりませんが、「極端に単純なボット」をふるい落とすフィルターとして機能します。
3. reCAPTCHA 等の認証サービスを使うときのポイント
Google reCAPTCHA などの認証サービスは、スパム対策としてよく利用されますが、
導入時には次のような点を考慮する必要があります。
- ユーザーに「画像選択」を強制するタイプは、BtoB サイトでは離脱要因になりやすい
- トークン検証などのサーバーサイド実装が必要
- 海外からの正規アクセスが多い場合、誤検知に注意する必要がある
近年は、ユーザーに操作を求めない「不可視型」やスコアベースのものも増えているため、
「どの程度スパムが多いか」「ユーザー層にどれだけ負担をかけられるか」 を踏まえて選定するのが現実的です。
4. サーバー側の対策:回数制限・IP制御・本文チェック
4-1. 投稿頻度・回数の制限
- 同一 IP からの短時間での連続投稿を制限する(例:1分間に1件まで)
- 同一メールアドレスからの連続投稿に制限をかける
誤検知を避けるために、「完全にブロック」ではなく、「一定時間おいてから再度お試しください」といったメッセージで制御するのが無難です。
4-2. IP・国コードによるフィルタリング
- 明らかな攻撃元 IP のブロック
- ビジネス上アクセス不要な国からの POST を制限する
グローバルに顧客を持つ企業では慎重さが必要ですが、国内向けサービスで海外からの利用がほとんどない場合は、
「日本以外からの投稿は別窓口に誘導する」といった設計も選択肢になります。
4-3. 本文パターンによるフィルタ
- 特定の URL ドメインを含む投稿を一時保留にする
- 明らかに機械的なフレーズ(同じ文言の大量投稿)を検知する
自動削除ではなく、「要確認」ステータスに振り分ける 仕組みにしておくと、誤検知リスクを抑えつつ運用できます。
5. 運用フローとしての「スパム対策」
技術的な対策だけでなく、運用フローを決めておくことで、担当者の負荷を下げられます。
- 迷惑投稿と判断した場合の扱い(即削除/一定期間保留)
- どの担当者・部署が一次判定を行うか
- ログ保存期間と、万が一のインシデント発生時に備えた追跡方法
たとえばインテンスでは、問い合わせ管理システム側に「スパム/迷惑」のフラグを設け、
数クリックで判定できる UI にしておくケースが多くあります。
6. 業種別のフォームスパム対策の考え方
フォームスパム対策は、業種やビジネスモデルによって「どこまで厳しくするか」が変わります。
- 製造業・BtoB サービス:フォーム経由の問い合わせが重要なリード源。ユーザー負担を極力増やさず、サーバー側のフィルタを厚くする。
- 物流・建設・現場系:現場担当者がスマホから送信するケースもあり、複雑な認証は避けたい。
- 医療・介護・福祉:家族による高齢者代行入力などもあり、画像認証は避けたい。
たとえば、製造業向けシステム開発例 や
物流向けシステム開発例 を見ると、
問い合わせフォームと社内管理画面の両方を設計する前提で、どのレイヤーでスパムを減らすかを考えている構成例が分かります。
自社の業態に近いパターンを参考にしながら、「ユーザー体験」と「防御力」のバランスを設計していくとよいでしょう。
本記事は、Webシステム開発・スマホ自動変換「movo」・業務システム構築・フォームUX改善・EC支援を提供する
株式会社インテンスが、実際の開発プロジェクトで蓄積した知見をもとにまとめています。
株式会社インテンス(公式サイト)