0

Facebookの+1のような投票サイトを作りたいと思っています。

チートに対処するためのベストプラクティスはありますか?

最善の方法は、facebook、twitter、および/または google を使用して一意のユーザーを作成することですが、匿名ユーザーに投票させたいと思います。

4

2 に答える 2

2

何らかの形式のプルーフ オブ ワーク システムを使用して、大規模な自動不正行為を防ぐことができます。そのためには、ブラウザーが投票にいくらかの計算を投資する必要があります。1 回の投票にそれほど時間はかからないはずですが、一括投票には深刻な計算作業が必要になります。この投票に JavaScript を使用すると、JavaScript 対応のブラウザー (またはブラウザー エミュレーション) から一括投票メカニズムを取得する必要があることも意味するため、HTTP 要求を生成する単純なスクリプトも無効になります。

ただし、1 人のユーザーが手動で複数回クリックしても、このアプローチによって大幅に遅れることはありません。したがって、この要件を IP アドレス、ユーザー エージェント文字列、Cookie、おそらくフラッシュ Cookie のログと組み合わせてください。Cookie は、一連の接続を使用して繰り返し投票しようとしている 1 人のダイヤルイン ユーザーを識別するのに役立ちます。ここに挙げた対策は、大規模な自動チート攻撃で簡単に回避できますが、手動投票には (完全ではありませんが) 適切に対処する必要があります。したがって、この 2 つのソリューションは互いにうまく補完し合うべきだと思います。

torなどの匿名ネットワークをブロックしたい場合があります。ただし、匿名ユーザーがサイトを表示できるようにする必要があるため、ブロックは投票にのみ影響するはずですよね?

認証されていないユーザーにCAPTCHAの解決を要求することも検討してください。投票がどれほど重要であるか、および認証されていないユーザーの数に応じて、ユーザーはこの手段によって投票を思いとどまる場合とそうでない場合があります。

于 2012-07-30T12:45:21.620 に答える
1

私の限られた経験から、認証を必要としない場合、システムは何らかの方法でだまされる可能性が高いです。全体として統計的に一意であると見なされます (ただし、このアプローチでは 100% の確実性を達成することはできません)。

もちろん、10 人のユーザーを想定している場合は、数百万のユーザーを処理するよりもはるかに簡単です。IP + ユーザー エージェントのチェックは、最初のケースではおそらく問題ありませんが、2 番目のケースではあまり良くありません (NAT が思い浮かびます)。

最後に、不正行為の可能性を考慮する必要があります。つまり、ユーザーが本当にシステムを不正行為しようとしているのでしょうか。それとも、簡単に偽造できる情報をチェックしてもかまわないのでしょうか?

于 2012-07-30T11:26:08.767 に答える