web-dev-qa-db-ja.com

ハニーポット技術はスパムに対してどの程度効果的ですか?

「ハニーポット」とは、多かれ少なかれこの慣行を意味します。

#Register form
<style>
    .hideme{
        display:none;
        visibility: hidden;
    }
</style>
<form action="register.php">
    Your email: <input type="text" name="u-email" />
    Choose a password: <input type="text" name="passwd" />
    <div class="hideme">
        Please, leave this field blank: <input type="text" name="email" />  #the comment is for text-browser users
    </div>
    <input type="submit" value="Register" autocomplete=off />
</form>

//register.php
<?php
if($_POST['email'] != ''){
    die("You spammer!");
}
//otherwise, do the form validation and go on.
?>

詳細 ここ

明らかに、実際のフィールドにはランダムなハッシュで名前が付けられ、ハニーポットフィールドには、スパムボットが通常入力するさまざまな名前(電子メール、ユーザー、Webサイト、ホームページなど)を付けることができます。

ユーザーがCAPTCHAに悩まされることがないので、この手法が大好きです。

このテクニックの経験はありますか?効果はありますか?

31
Strae

それは比較的うまく機能しますが、ボットの作成者があなたのページに対応している場合、彼らはそれを見て(またはチェックするための定期的な設定さえあり)、それに応じてボットを変更する可能性があります。

私の好みは reCaptcha を使用することです。しかし、上記はいくつかのボットを停止します。

4
Brad F Jacobs

古い質問ですが、ハニーポットスパム防止方法を使用するDrupal( Honeypot )のモジュールを維持しているので、チャイムを鳴らしたいと思いました。時間ベースの保護(ユーザーは[〜#〜] x [〜#〜]秒未満でフォームを送信できず、Xは指数関数的に増加しますこれらの2つの方法を使用して、ほとんどすべての自動スパムを排除した多くのサイト( )について聞いたことがあります。

Honeypot +タイムスタンプの方が、CAPTCHAベースのソリューションよりも成功しています。ほとんどのスパマーをブロックしているだけでなく、 ユーザーを罰する でもないからです。

20
geerlingguy

以下の手法で、スパムを100%ブロックします。

  1. ディスプレイ付きハニーポット:なし。失敗した場合は、追加のスクリプトを実行してIPアドレスを収集し、それを.htaccessファイルに書き込みます。
  2. コメントフィールドのURLの数を数えます。失敗した場合は、これが人間である可能性があるという理由だけで警告してください。
  3. 投稿する時間を測定します。 5秒未満の場合は、エラーメッセージを表示して、人間が自動入力プラグインを使用してかなり高速に書き込むことができるため、再試行させてください。
  4. htaccessファイルをcrontabで毎日トリミングして、拒否行が30行を超えないようにします(それに応じて調整します)。

ボットは同じIPを忍び込もうとするため、IPアドレスによるアクセスの拒否は非常に効果的です(IPを変更した場合は、その新しいIPをhtaccessに配置するので問題ありません)。 .htaccessファイルをcrontabで毎日自動的にトリミングして、ファイルが大きくなりすぎないようにします。ブロックするIPの数を調整して、同じIPを持つ同じボットが約1週間ほどブロックされるようにします。ボットが同じIPを3日間使用して、数回攻撃していることに気づきました。

最初の#1トリックは約99%をブロックし、#2は約1%をブロックし、ボットはこれら2つを通過しないため、#3は必要ない場合があります。

10
mowmow-guest

私は2010年頃からハニーポットキャプチャを3つの形式で使用してきましたが、ごく最近まで変更なしで驚くほど効果的でした。少なくともスパムボットがより洗練されるまで、ほとんどのスパムボットを阻止すると思われるいくつかの変更を加えました。大まかに言えば、これが私たちがそれを設定した方法です:

各フォームの1つの入力フィールドは非表示(CSSクラス属性でdisplay:noneが指定されています)で、デフォルト値は「」です。スクリーンリーダーなどの場合、非表示の入力ラベルにより、フィールドを空のままにする必要があることが明確になります。デフォルトでは長さがまったくないため、サーバー側のコード(この場合はColdFusionですが、どの言語でもかまいません)を使用して、そのフィールドに何かがある場合はフォームの送信を停止します。そのように送信を中断すると、成功した場合と同じユーザーフィードバック(「コメントありがとうございます」など)が返されるため、失敗の兆候はありません。

しかし、時間が経つにつれて、ボットは目覚め、私たちのフォームの最も単純なものはスパムで打たれました。フロントエンド検証付きのフォームはうまく持ちこたえました。これは、古いテキスト入力だけを受け入れるのではなく、メールアドレスをメールアドレスのように構成する必要があるためだと思います。脆弱であることが判明した1つのフォームには、コメント用のテキスト入力と連絡先情報(電話番号と電子メール)用の2つのオプション入力しかありませんでした。重要なのは、これらの入力のいずれにもフロントエンドの検証が含まれていないことだと思います。

その検証を追加するのは簡単ですが、すぐに追加します。ただし、今のところ、「タイムトラップ」の方法で他の人が提案したものを追加しました。ページが読み込まれるときに時間変数を設定し、そのタイムスタンプをフォームが送信された時間と比較します。現時点では、ページで10秒後に送信を許可していますが、3秒を提案する人もいます。必要に応じてアダストを作ります。フロントエンド検証を追加する前に、これだけでスパムトラフィックにどのような影響があるかを確認したいと思います。

だから私の経験の簡単な要約はこれです:ハニーポットはそれが最初に考えられたようにかなりうまく機能します。 (最初に見つけた場所は覚えていませんが、 この投稿 は10年以上前に最初に見たものと非常に似ています。)-を追加するとさらに効果的になります。 HTML5によって有効化されたクライアント側の検証 。そして、私たちは、これらのあまりにも厄介な提出物に現在課しているサーバー側の制限により、さらに良くなると思います。

最後に、reCaptchaのようなソリューションは私たちにとってテーブルから外れていることを述べておきます。 GoogleのマップAPIを使用してウェブアプリを開発するのにかなりの時間を費やしましたが、Googleが警告や移行のアドバイスなしにAPIを変更するまで、それはうまく機能しました。同じ虐待的な配偶者と二度結婚することはありません。

2
Jeff Seager