1. ホーム
  2. forms

[解決済み] ハニーポット実装の改善 (フォームスパム対策)

2023-04-16 18:18:18

質問

どうしたらスパムボットを排除できるでしょうか?

どのサイトも スパムボット の被害を受けることがあります。それをどのように扱うかは顧客に影響を与え、ほとんどの解決策は、フォームに記入することを思いとどまらせることができます。

そこで登場するのがハニーポット技術です。これにより、ユーザーがフォームに記入するためにキャプチャや他の輪を飛び越えることを強いられることなく、スパムボットを無視することができるようになります。

この投稿は、純粋に他の人が自分のウェブサイトのフォームにハニーポットトラップを実装するのを助けるためのものです。


更新しました。

以下のハニーポットをクライアントの全ウェブサイトに実装して以来、私たちは以下のようなブロックに成功しました。 99.5% (数千の送信) のスパムをブロックすることに成功しました。これは、近日中に実装されるであろう、quot;advanced" セクションで言及されたテクニックを使用しない場合です。

どのように解決するのですか?

コンセプト

スパムボットにしか見えない不可視のフィールドをフォームに追加することで、実際のエンドユーザーではなくスパムボットであることを明らかにするよう仕向けることができます。

HTML

<input type="checkbox" name="contact_me_by_fax_only" value="1" style="display:none !important" tabindex="-1" autocomplete="off">

ここでは、シンプルなチェックボックスがあります。

  • CSS で非表示にしています。
  • 無名だが明らかに偽名である。
  • デフォルト値として 0 が設定されています。
  • オートコンプリートで埋められません。
  • を経由して移動することはできません。 タブ キーで移動することはできません。(参照 tabindex )

サーバーサイド

サーバーサイドでは、値が存在し、0以外の値を持つかどうかを確認し、存在する場合はそれを適切に処理したいと思います。 これには、試行と送信されたすべてのフィールドをログに記録することが含まれます。

PHPでは、次のようになります。

$honeypot = FALSE;
if (!empty($_REQUEST['contact_me_by_fax_only']) && (bool) $_REQUEST['contact_me_by_fax_only'] == TRUE) {
    $honeypot = TRUE;
    log_spambot($_REQUEST);
    # treat as spambot
} else {
    # process as normal
}

フォールバック

ここで、ログが登場します。何らかの理由でユーザーの 1 人がスパムとしてマークされた場合、ログは失われた情報を回復するのに役立ちます。また、将来、ハニーポットを回避するためにボットが変更された場合、サイト上で実行されているボットを調査することができます。

報告

多くのサービスでは、API を介して、またはリストをアップロードすることによって、既知のスパムボットの IP を報告することができます。(例えば CloudFlare ) あなたが見つけたすべてのスパムボットとスパムIPを報告することによって、インターネットをより安全な場所にするためにご協力ください。

高度な

より高度なスパムボットを本当に取り締まる必要がある場合、追加でできることがいくつかあります。

  • ハニーポット フィールドを、CSS ではなく JS で純粋に隠す。
  • 実際には使用しない、現実的なフォーム入力名を使用する。(例えば "phone" や "website" など)
  • ハニーポット アルゴリズムにフォーム検証を含める。(ほとんどのエンドユーザーは 1 つか 2 つのフィールドを間違えるだけですが、スパムボットは通常、ほとんどのフィールドを間違えます)。
  • 既知のスパム IP を自動的にブロックする CloudFlare のようなサービスを使用する。
  • フォームのタイムアウトを設定し、即時投稿を防ぐ。(ページがロードされてから 3 秒以内に送信されたフォームは、一般的にスパムです)
  • どの IP からも 1 秒に 1 回以上投稿できないようにします。
  • その他のアイデアについては、こちらをご覧ください。 フォームスパマーを捕らえるためのNuclearハニーポットの作り方