ハニーポットとは
概要
ハニーポット (honeypot) は、フォームに人間には見えない隠しフィールドを追加し、そのフィールドに値が入力された場合に Bot と判定する技術である。人間はフィールドの存在に気づかないため入力しないが、Bot はフォームの全フィールドを機械的に埋めるため、隠しフィールドにも値を入力してしまう。この差異を利用して Bot を検出する。
実装方法
ハニーポットの実装は単純である。フォームに通常のフィールドと同じ見た目の入力欄を追加し、CSS で `display: none` や `position: absolute; left: -9999px` などのスタイルを適用して画面外に配置する。サーバー側では、このフィールドに値が含まれていた場合にリクエストを拒否する。
フィールド名を `email2` や `website` のように、Bot が自動入力しやすい名前にすると検出率が上がる。逆に、`hp_field` のような明らかにハニーポットとわかる名前は、高度な Bot に回避される可能性がある。
限界と組み合わせ
ハニーポットは実装が容易でユーザー体験を一切損なわない利点がある。しかし、高度な Bot は CSS を解析して隠しフィールドを検出し、入力を回避できる。また、ブラウザの自動入力機能が隠しフィールドに値を入れてしまい、正規ユーザーが誤検知される場合もある。
そのため、ハニーポット単体ではなく、Proof of Work やレートリミットと組み合わせた多層防御が推奨される。ハニーポットは「低コストで大半の単純な Bot を排除する第一の防壁」として位置づけ、すり抜けた Bot は PoW やレートリミットで対処する設計が効果的である。
不正対策やセキュリティ技術について詳しく知りたい方は、情報セキュリティの関連書籍も参考になります。