0

CAPTCHAによって保護された匿名の投稿が許可されているフォーラムがあります。ユーザーの便宜のために、私はそのようなユーザーに約1か月続くCookieを設定して、ユーザーがCAPTCHAを何度も取得しないようにしました。最も単純な形式では、Cookieが呼び出されno_captcha_for_one_month、その値は1です。ユーザーが戻って匿名で投稿すると、CAPTCHAは取得されません。

欠陥を見た人はいますか?フォーラムのスパマーは、CAPTCHAに一度正しく入力し、ボットのCookie情報を使用するだけで済みます。

クリエイティブになり、ユーザーのIPアドレスやシークレットソルトなどを含むサーバー側のハッシュを使用してCookie値を生成することを考えましたが、もちろん、このIPアドレスでも有効です。

誰かが質問がばかげているという印象を受け、私は解決できない何かを解決しようとします。

4

5 に答える 5

2

問題を解決するためではなく、セキュリティ上の理由から、Cookie値とSaltの実装を実装することをお勧めします。このブログ投稿で説明されているように、ワードプレスは、Cookieのセキュリティが不十分なため、はるかに深刻ではありますが、同様の問題を抱えていました。あなたの場合、Cookieの有効期限が切れていても、決定されたスパマーは常にCAPTCHAをバイパスできます。

提案された問題を解決するために頭に浮かぶ唯一の解決策は、ユーザーがスパムであると感じた場合に新しく保護されたCookieを上書きする強制CAPTCHAアルゴリズムを実装することです。頭のてっぺんから、前回の投稿からの時間、今日の投稿の数、フォームにメッセージを作成するのにかかった時間などの属性を使用します。

編集:ユーザーが送信したリンクにrel = "nofollow"属性を実装することで、そもそもフォーラムをスパマーにとって魅力のないものにすることができることにも言及する必要があります。ウィキペディアを参照してください。

于 2011-03-07T12:07:06.090 に答える
1

このようなソリューションでは、ボットにCookieを使用することが常に可能です。何をしようとも。

于 2011-03-07T12:05:40.247 に答える
0

以下で説明するように、Cookieはブラウザから簡単に取得してボットコードに貼り付けることができるため、ソリューションは堅牢ではありません。

その他の解決策:

  • フォーラムにたくさん投稿しているユーザーを見つけて、モデレーターになるボランティアかどうかを尋ねます。AutoHotkeyのようなフォーラムはこのシステムを使用しており、これは正常に機能します。スパマーは、モデレートが高速で効率的なアクティブなフォーラムを避ける傾向があります。彼らは死んだフォーラムを好みます...
  • IPアドレスごとの匿名投稿の数を制限します。ユーザーに迷惑をかける可能性がありますが、スパムフラッディングを回避できます。このような洪水が発生した場合にのみ設定する必要があります。
于 2011-03-07T12:07:27.603 に答える
0

さらに悪いことに、Cookieを使用しているため、スパマーはCAPTCHAを1回実行する必要さえありません。Cookieはクライアントが変更でき、ページリクエストとともにブラウザから送信されるため、クライアントは必要なものを送信できます。実際、スパムリクエストはスクリプトから送信されるため、Cookieの作成はさらに簡単です。

可変サーバー側の敷居を保存すると、私が述べた問題が解決します。ランダムハッシュをCookieとして設定し、サーバー上のCAPTCHAステータスを格納するテーブルを作成します。スパマーがCAPTCHAを取得しないためには、サーバー側に正しい変数が格納されているハッシュを推測する必要があります。これは非常に困難です。

あなたが言及した問題; 月に一度はスパマーを阻止するのに十分な長さではないかもしれないという事実は、それを回避することはできません。スパマーにもCAPTCHAを入力させたい場合は、実際のすべてのユーザーにCAPTCHAを表示する必要があります。スパマーと通常のユーザーを区別できないため、CAPTCHAが必要であることを忘れないでください。

CAPTCHAショーを頻繁に開催する必要があります。とにかく、サインアップするように人々を説得します。

于 2011-03-07T12:09:56.197 に答える
0

時間を暗号化し(ピコまたはナノ秒単位)、入力値()として設定し、データベースに「ハッシュ」という列名で設定します。

すべてのページでそれを設定し、DBと一致するかどうかを確認します。

于 2013-10-04T11:00:06.617 に答える