悪意のあるボットがスパムを投稿するのを防ぐ


15

誤用のためにサイトが閉鎖されたことを覚えていますがボットにその一部があるのではないかと思います。ボットがサイトに何かを投稿している場合、ボットと戦う方法は何ですか?私はいくつかのクッキーを設定し、JavaScript +タイムスタンプと署名を使用してクッキーを変更することを考えていました(したがって、昨日のクッキーは今日と来週使用できません)。

ほとんどの人/ボットは、ボットでJavaScriptを有効にするのではなく、別のサイトを使用するに違いないと確信しています。

他に何ができますか?私は毎日のPOST制限と、ランダムにスパムを投稿するだけの一般的なボットのハニーポットを考えています。

回答:


13

次のようないくつかのことができます。

  1. ボットのみに見える偽のフィールドを配置します。次に、そのフィールドがフォームの残りの部分とともに送信された場合、それを無視することができます(必要に応じて禁止します)。また、非表示のリンクをたどる悪いボットをトラップすることもできます。

  2. reCAPTCHAのようなCAPTCHAを使用する

  3. ユーザーが5 + 3のような質問に答える必要があるフィールドを使用します。人間は誰でも答えることができますが、ボットはフィールド名に基づいてフィールドを自動入力するため、何をすべきかわかりません。そのため、そのフィールドは正しくないか欠落しているため、送信は拒否されます。

  4. トークンを使用してセッションに入れ、フォームに追加します。トークンがフォームと一緒に送信されない場合、または一致しない場合、トークンは自動化され、無視できます。

  5. 同じIPアドレスからの繰り返し送信を探します。フォームがあまり多くのリクエストを受け取るべきではないが、突然ボットにヒットしている可能性がある場合、一時的にIPアドレスをブロックすることを検討する必要があります。

  6. Askimetを使用します。スパムの識別に優れています。


5
+1-理想的には、上記の提案の組み合わせをユーザーフレンドリーな方法で実装します(たとえば、ユーザーがJavascriptを無効にしているため、Javascriptベースの認証に失敗した場合、CAPTCHAを提示します)
ダンルフリー

6

ジョン・コンデは多くの良いアプローチを概説しています。アンチボット/アンチスパム技術の選択に関する問題は、有効性と利便性のバランスをとることです。コメントやメッセージを投稿するたびにCAPTCHAに記入する必要があるのは本当に不便ですが、サインアップ時にCAPTCHAのみが必要な場合は、スパマーを思いとどまらないことがあります。

受動的なテクニックのいくつかは、人間の行動を必要としないため、優れた代替手段です。問題は、ボットがますます高度化しており、ボットがCAPTCHAを解決できれば、JSとCSSを確実に処理できることです。したがって、ボットトラップフィールドを非表示にするために、あまり目立たないCSSを使用するなど、少し工夫する必要があります。

しかし、あなたの質問に基づいて、ボットプルーフサイトを作成することではなく、ボットユーザーが他の簡単なターゲットを選択するだけの十分な抑止力を作成することがポイントであることをおそらく理解していると思います。したがって、ここで何が必要かはサイトごとに異なり、おそらく試行錯誤のテストが必要になります。最初に最も目立たない手法を試します。

最後に、サイトのスパム対策を行うもう1つの方法は、ピアモデレーションを使用して、ボットから送信されたコメントまたは手動で送信されたスパムを削除することです。


ピアモデレーションのアイデアを説明できますか?通常のユーザーがモデレーターの権利を取得する必要がありますか、それをどのように想像する必要がありますか?
0xC0000022L

@STATUS_ACCESS_DENIED:返信が遅くなって申し訳ありませんが、ピアモデレーションは基本的にdigg、slashdot、stackexchangeなどのようなもので、ユーザーが何らかの形で肯定的または否定的なフィードバックを与えることでサイトのコンテンツをモデレートできます。したがって、システムを自動化して、十分なユーザーがコンテンツに対して否定的なフィードバックを与えると、コンテンツは自動的に非表示になるか、レビュー用にフラグが立てられます。StackExchangeなどのサイトでは、ユーザーはコメント/回答にスパムのフラ​​グを付けて、管理者の注意を引くこともできます。これにより、有料の管理者がしなければならない作業が削減されます。
リースマジェス

ありがとう。もちろん、これは、フィードバックを提供するのに十分なユーザーが煩わされる可能性のあるトラフィックの多いサイトでのみ機能します;)
0xC0000022L

1

John Condeが#1)で述べたように、そしてあなたが述べたように、ハニーポットはほとんどの場合とほとんどのWebサイトで非常にうまく機能します。ボットによって実行された場合、Johnが言及した他の方法のいずれかを実行できます。しかし、正直に言って、サイトのトラフィックが少ない場合や平均的なトラフィックの場合は、これでうまくいくはずです。

例、私のお気に入りの1つ:

<form action="/process-form">
<input name="email" placeholder="Enter Your Email">
<input name="email_address" placeholder="Enter Your Email" style="display:none;">
<input type="submit" value="Submit"></form>

これで、フォームが送信されると、非常に高い割合のボットが「email」と「email_address」の両方を記入しますが、人間は「email_address」ではなく「email」のみを記入します。したがって、 `/ process-form 'コードでは、確認のためにemail_addressが空かどうかを確認する必要があります。

シンプルで効果的。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.