質問
匿名のスパマーによるサイトの悪用を防ぐメカニズムは何ですか。
たとえば、人々が何かに投票できるサイトがあるとします。しかし、私 しないでください 誰かがトップに何かをスパムしてほしい。そこで私は、(a) アカウントを作成して 1 回のみ投票を許可すること、(b) スパムを減らすために CAPTCHA を行うことを発見しました。他にどのような方法を知っていますか?また、それらはどれほど効果的ですか?
解決
私が気づいた大きな点は、何をするにしても、システムを独自のものにしたいということです。ほぼどこでも機能する既存のスクリプトを攻撃者に投げ込むのではなく、攻撃者が特定のサイトに合わせて自動化プログラムをカスタマイズできるようにしたいと考えています。暗号的に安全である必要さえありません。必要なのは、サイトを標準とは少し異なるものにすることだけです。
これは、事前に構築されたキャプチャ ウィジェットのようなものを使用できない、または使用すべきではないという意味ではありません。ぜひ、これらのいずれかを開始点として使用してください。これは、標準を超えた何か特別なことが発生し、通常はそれを無効にする既存のスクリプトを破壊するように、どこかでカスタマイズする必要があることを意味します。
サイトが大きくなり、攻撃者が特にそれを狙うようになった場合、単純な小さなカスタマイズではおそらくもう通用しなくなり、もう少し特別なことをして、実際の暗号化などについて考える必要があるかもしれません。しかし、それは「良い」問題の 1 つです。
他のヒント
から xkcd
CAPTCHA システムについては、心からお勧めします。 再キャプチャ.
従来のコンピュータ生成の CAPTCHA は、 結局壊れる 十分にインテリジェントなシステムを開発することによって。例えば、 ここに誰かがいます 彼は、以前は解読不可能だと考えられていた Google CAPTCHA を 30% のヒット率で解読すると主張しています。reCAPTCHA は、定義上、光学式文字認識では認識できない画像のみを表示します。
そして同時に、ユーザーの努力は共通の利益に向けられることになります。ユーザーは、自動的に認識できない単語を認識することで書籍のデジタル化に役立ちます。
見る ここ さらに詳しい説明と試してみてください。
から 量子ランダムビット生成サービス, 、 経由 Mネイロン
- IP アドレスごとの一度の投票数を制限する
- 匿名化プロキシをブロックします。
- 投票について:フォームによって返される必要がある値を「セッションごとに」シャッフルしてみてはいかがでしょうか。「1」が最初の項目を意味すると、「2」は 2 番目の項目を意味します。「77」は最初の項目を意味し、「812」は 2 番目の項目を意味します...舞台裏で単純な計算が行われている可能性がありますが、これにより、ユーザーが同じ HTTP クエリを何度も送信することができなくなります。
- 私にとって非常にうまくいったこと:単純な HTTP フォームではなく、AJAX フォームを使用してください。技術的には、投票を偽装するのはそれほど複雑ではありませんが、私は簡単なブログ ソフトウェアを作成しました。スパム保護メカニズムは AJAX 経由でコメントを送信することだけであり、今のところスパムはありません。
私は「隠しフィールド」CAPTCHA のファンです。どこで読んだのか覚えていないのですが、アイデアは次のとおりです。
- 通常どおりフォームを作成します
- 余分なフィールドを追加しますが、それを非表示にします(つまり、
style="display:none"
周囲の div またはテーブル行) - 送信後、フィールドが空白の場合は、適切なアクションを実行します (電子メールの送信など)。フィールドが入力されている場合、それはロボットの送信者です
この問題が発生する唯一のケースは、ユーザーのブラウザが CSS を処理しない (または CSS をオフにしている) 場合ですが、これは非常にまれです。
テレビの「タレント」番組のように投票料を請求すると、銀行までスパムメールが送られてきます。
真剣に言うと、これは非常に難しい問題であり、いつか (レイ・カーツワイルの話を聞けば、おそらく近いうちに) コンピューターが人間を選別するテストを行うようになるでしょう。私がリストに追加している回答には明らかな欠点がありますが、列挙するためだけに次のとおりです。モデレーション (人間にテストを行わせる)、および IP ベースの追跡 (ホストからの投票数を制限する)。
stackoverflow には、これを支援する機能がいくつかあります。実行できる最も有用な手順は、匿名ユーザーと新しいアカウントの投票機能を無効にすることだと思います。このようにすれば、誰も何百ものアカウントにサインアップして、自分の 1 票を使って他のユーザーを圧倒することができなくなります。いくつかの投稿や一定期間のメンバーシップを要求することは、どちらも適切な選択肢だと思います。
この問題に対処するには、IP アドレスごとに 1 票を許可すればよいという人もいますが、私は、ほぼ無限の数のプロキシを持つ悪意のあるユーザーが IP アドレス ベースのセキュリティを無視するゲームをたくさんプレイしてきました。これは抑止力ですが、知識のあるユーザーであれば簡単に回避できます。
ここは、の研究領域です 人間による計算.
Luis von Ahn による素晴らしいビデオがここにあります。http://video.google.com/videoplay?docid=-8246463980976635143
に対する答えにはいくつかのアイデアがあります 非画像ベースの CAPTCHA は最適ですか? まだ見ていない場合は質問してください。
私は通常、次の 2 つを組み合わせて使用します。匿名ユーザーはすべてを自由に閲覧できますが、投票したい場合は登録する必要があります。
登録プロセスでは、状況に応じて、オプトイン スルー メール (登録を完了し、少なくともメールボックスが存在することを確認する) や CAPTCHA を使用します。
その時点から、ユーザーが複数回投票できるかどうか、またはその他のルールを決定できます。
ところで、私は IP ベースの制約が好きではありません。大きな組織のネットワークでは、すべてのユーザーに対して少数の IP しか使用していない状況が多く、投票できるユーザーをブロックするリスクが高くなります。