web-dev-qa-db-ja.com

キャプチャなしでスパムを停止する

スパマーが自分のサイトを使用するのを止めたい。しかし、CAPTCHAは非常に煩わしいと思います。私は「テキストを入力する」タイプについて話しているだけでなく、ユーザーが自分自身を人間であることを証明するために時間を無駄にする必要があるものについて話します。

ここで何ができますか?

22
unreal

必須データを投稿するJavascriptは、ほとんどのユーザーに干渉することなく、かなりの量のスパムボットをブロックします。

気の利いたトリックを使用することもできます。

<input type="text" id="not_human" name="name" />
<input type="text" name="actual_name" />
<style>
   #not_human { display: none }
</style>

ほとんどのボットは最初のフィールドに入力されるため、ブロックできます。

22
vassilis

これまでのところ非常に成功していると思われるいくつかの方法を組み合わせます。

  1. emailという名前の入力フィールドを入力し、CSS display: noneで非表示にします。フォームが送信されたら、このフィールドが空かどうかを確認してください。ボットはこれを偽のメールアドレスで埋める傾向があります。

  2. ページがロードされた時間を含む別の非表示の入力フィールドを提供します。ページの読み込みから送信までの時間が、フォームへの入力にかかる最小時間よりも長いかどうかを確認してください。私は5秒から10秒の間を使用します。

  3. 次に、GETパラメーターの数が予想どおりであるかどうかを確認します。フォームアクションがPOSTで、送信ページの基になるURLがindex.php?p=guestbook&sub=submitの場合、2つのGETパラメーターが必要です。ボットはGETパラメーターを追加しようとするため、このチェックは失敗します。

  4. 最後に、ボットが設定しないことがあるHTTP_USER_AGENTが設定されているかどうか、およびHTTP_REFERERがフォームのページのURLであることを確認します。ボットは、送信ページにPOSTするだけで、HTTP_REFERERが別のものになることがあります。

ほとんどの情報は http://www.braemoor.co.uk/software/antispam.shtml および http://www.nogbspam.com/ から入手しました。

15
Henridv

Akismet API を統合して、ユーザーの投稿を自動的にフィルタリングします。

14
Mike Atlas

.NETソリューションを探している場合、 Ajax Control ToolkitにはNoBotという名前のコントロールがあります

NoBotは、ユーザーの操作を必要とせずに、CAPTCHAのようなボット/スパム防止を提供しようとするコントロールです。 NoBotには、完全に見えないという利点があります。 NoBotは、ブログ/コメントスパムが問題であり、100%の有効性が必要とされない、トラフィックの少ないサイトにおそらく最も関連性があります。

NoBotは、いくつかの異なるアンチボット手法を採用しています。

  • クライアントのブラウザに構成可能なJavaScript計算を実行させ、ポストバックの一部として結果を検証します。 (例:計算は単純な数値である場合もあれば、ブラウザーが関与していることをさらに保証するためにDOMを含む場合もあります)
  • フォームが要求されてからポストバックできるようになるまでの間に、構成可能な遅延を適用します。 (例:人間が2秒未満でフォームに記入する可能性は低いです)
  • 単位時間あたりのIPアドレスごとの受け入れ可能な要求の数に構成可能な制限を適用します。 (例:人間が1分間に5回以上同じフォームを送信する可能性は低いです)

これでのさらなる議論とデモンストレーション NoBotのJacques-Louis Chereauによるブログ投稿

<ajaxToolkit:NoBot
  ID="NoBot2"
  runat="server"
  OnGenerateChallengeAndResponse="CustomChallengeResponse"
  ResponseMinimumDelaySeconds="2"
  CutoffWindowSeconds="60"
  CutoffMaximumInstances="5" />
4
p.campbell

アクセシビリティの問題やクロスブラウザの問題などが発生する可能性があるため、CSSまたはJavascriptのトリックを使用して、ユーザーが本物の人間であることを確認するように注意します。スパムボットはかなり洗練されている可能性があるため、かわいい小さなCSSディスプレイを採用します。とにかくトリックはうまくいかないかもしれません。

Akismetを調べます。

また、ユーザーデータを検証する方法を工夫することもできます。たとえば、ユーザーの電子メールとアドレスを必要とする登録フォームがあるとします。ドメインが実際にメールを受信するように設定されていること、および提供されたものと一致するメールボックスがそのドメインにあることを確認する場合でも、電子メールアドレスの検証方法にかなりハードコアになる可能性があります。また、Google Maps APIを使用して、住所を地理的に特定し、それが有効であることを確認することもできます。

これをさらに進めるために、「ハード」および「ソフト」検証エラーを実装できます。メールアドレスが正規表現検証文字列と一致しない場合、それは難しい失敗です。ドメインのDNSレコードをチェックして、メールを受け入れること、またはメールボックスが存在することを確認できないことは、「ソフト」障害です。ソフトフェイルが発生した場合は、CAPTCHA検証を要求できます。これにより、CAPTCHA検証のためにプッシュする必要がある回数が減ることが期待されます。サイトで十分なアクティビティを取得している場合、有効なユーザーが少なくとも一部の時間に有効なデータを入力する必要があるためです。

4
Sam Day

これはかなり古い投稿だと思いますが、実装が簡単でjavascriptを必要としない「ハニーポットキャプチャ」と呼ばれる興味深いソリューションに出くわしました。

非表示テキストボックスを提供します!

  • ほとんどのスパムボットは、非表示のテキストボックスを喜んで完成させ、丁寧に無視できるようにします。
  • ほとんどのユーザーは違いさえ知らないでしょう。

スクリーンリーダーを使用しているユーザーが罠に陥るのを防ぐには、テキストボックスに「人間の場合は空白のままにします」などのラベルを付けます。

多田!邪魔にならないスパムブロック!これが記事です:

http://www.campaignmonitor.com/blog/post/3817/stopping-spambots-with-two-simple-captcha-alternatives

1
Jeremy

名フィールドに入力した値の最初の文字と姓フィールドの最後の文字を入力するようにユーザーに指示する、人間が読める形式の質問はどうでしょうか。

または、リファラーなどの値を含むJavaScriptで埋められたいくつかの非表示フィールドを表示します。これらのフィールドが、以前にセッションで保存したフィールドと等しいかどうかを確認してください。値が空の場合、ユーザーにはjavascriptがありません。そうすれば、スパムではありません。しかし、ボットは少なくともそれらのいくつかを埋めます。

0
yunzen

確かに、ハニーポットまたはBOTCHAのいずれかを選択する必要があります。

0
Mashhadi

100%で回避するのは非常に難しいので、読むことをお勧めします このIBMの記事 2年前に投稿された「RealWeb2.0:Battling Webspam」では、訪問者の行動と制御ワークフローが十分に分析され、簡潔

Webスパムには、次のようなさまざまな形式があります:

  • ウィキ上のスパム記事と破壊された記事
  • ブログにスパムをコメントする
  • フォーラム、課題追跡システム、その他のディスカッションサイトへのスパム投稿
  • リファラースパム(スパムサイトがユーザーをリファラーをリストするターゲットサイトに紹介するふりをする場合)
  • ソーシャルネットワーク上の誤ったユーザーエントリ

Webスパムへの対処は非常に困難ですが、Web開発者は危険を冒してスパム防止を怠っています。この記事と後の第2部では、さまざまな種類のWebスパムに対抗するための技術、テクノロジー、およびサービスを紹介します。

また、電子メールに加えて、Wikiなどのスパムを最小限に抑えるための非常に興味深い "... ハッシュキャッシュ手法 もリンクされています。

0
quantme