13

私は自分のサイトの投票方法を書こうとしています。人々が同じものに二度投票するのを止める方法が欲しい. これまでのところ、私の考えは次のとおりです。

  • 投票が完了したら、Cookie をドロップします (マルチ ブラウザ ゲームの影響を受けやすい)。
  • 投票ごとに IP アドレスをログに記録します (これはプロキシ/企業環境では失敗します)
  • 強制ログイン

私のサイトはアカウント ベースではありませんが、Twitter データを集約しているため、識別手段としてTwitter OAuthを使用する余地があります。

どのような既存のシステムが存在し、どのようにこれを行うのですか?

4

7 に答える 7

11

最善の方法は、匿名の投票を禁止することです。ユーザーが強制的にログインする場合は、投票ごとにユーザーIDを保存し、ユーザーが1回だけ投票するようにすることができます。

Cookieは簡単に削除できるため、Cookieのアプローチは非常に脆弱です。IPアドレスのアプローチには、あなた自身が説明する欠点があります。

于 2010-10-19T12:37:10.830 に答える
3

ユーザー認証システムへの一歩ですが、複雑さのすべてではありません:

ユーザーにメールアドレスを入力して投票を確認してもらいます。ゲームを根絶することはできませんが、ゲーマーが別のメールアドレスを登録して投票することが難しくなります。

余分なステップの価値があるかもしれません。

あなたが何のために行くのか教えてください。

于 2010-10-19T12:45:39.890 に答える
3

どのタイプのゲームから身を守りたいですか? 誰かがいくつかのボットを作成し、何千 (何百万) ものリクエストであなたを爆撃しますか? それとも、やるべきことがなく、10~20票を投じようとする人ですか?

はい、わかっています: 両方ですが、ここであなたが主に関心を持っているのはどちらですか?

CAPTCHA を電子メールベースの投票(電子メールへのリンクを送信して投票を検証する) と一緒に使用すると、ボットに対してうまく機能する可能性があります。しかし、人間は多かれ少なかれ簡単にメールシステムを悪用できます(ある回答でコメントし、ここに再度投稿するように)

私はカスタム ドメインを所有しており、その中に必要なメールを含めることができます。

別の例: メールが myuser* @gmail.com * の場合、"myuser+1@gmail.com" myuser+2@gmail.com などを使用できます (プラス記号とその後のテキストは無視され、あなたのアカウントに配信されます)。ユーザー名にドットを含めることもできます (my.user@gmail.com)。(これは Gmail アドレスでのみ機能します!)

人間から身を守るために、私はever-cookieを知りませんが、それは良い選択かもしれません. Twitter、FB、その他のネットワークと統合された OAuth を使用することもうまくいくかもしれません。

また、覚えておいてください: 誰かが投票するために電子メールを要求すると、多くの人が怖がってしまいます! 投票数が大幅に減ります!

もう 1 つのオプションは、システムが 1 分 (または 1 時間など) ごとに各 IP から受け入れる投票数を制限することです。分散攻撃から保護するには、システムが時間枠内で受け入れる投票の総数を制限します。

于 2011-01-25T11:16:46.187 に答える
3

最終的に Cookie を使いたい場合は、evercookieを使用してください。

evercookie は、ブラウザで非常に永続的な Cookie を生成する JavaScript API です。その目標は、クライアントが標準の Cookie、Flash Cookie (ローカル共有オブジェクトまたは LSO) などを削除した後でも、クライアントを識別することです。

evercookie は、ローカル ブラウザで利用できる数種類のストレージ メカニズムに Cookie データを保存することで、これを実現します。さらに、evercookie は、ユーザーが問題の種類の Cookie のいずれかを削除したことを発見した場合、利用可能な各メカニズムを使用してそれらを再作成します。

もちろん、マルチブラウザの不正行為には影響しません。

于 2010-10-19T13:11:05.177 に答える
1

ユーザーに強制的にログを記録させたくない場合は、このevercookieを検討してください。ただし、Javaスクリプトに強制的にログを有効にしてください。

このevercookieは、Javaスクリプトベースであるため、ブロックするのは簡単です。攻撃者はブラウザを使用しない可能性が高く、curlを使用するとリクエストのtousendを生成する可能性があります。そのようなツールは通常、JavaScriptのサポートが不十分です。

メールはごまかすのがさらに簡単です。独自のサーバーを実行する場合は、すべての電子メールアドレスを受け入れることができるため、使用するアドレスのプールは実質的に無制限になります。

于 2011-01-25T10:53:00.640 に答える
1

代替手段を提供するための別のアプローチ:

ほとんどの人が振る舞い方を知っているか、不正行為に煩わされることがないと仮定すると、さかのぼって投票をクリーンアップします。これにより、有権者にとって目立たない投票が維持されます。

したがって、Cookie を設定し、すべての投票をログに記録し、その後 (または時間間隔で) 結果を確認し、Cookie の値、IP/UserAgent の組み合わせなどに基づいて重複を削除します。

同じ人からの複数の投票を積極的にブロックしないことで、高度に技術的な回避方法の使用を最小限に抑え、結果を簡単にクリーンアップできると思います。

欠点としては、実際の投票数をユーザー インターフェースにライブで表示できない可能性があります。そうしないと、大量の投票がたまたま行方不明になったときに眉をひそめることになります。

于 2010-10-19T12:56:27.267 に答える
1

私はおそらくこれを自分で行うことはありませんが、これらの Cookie を見てください。これらを取り除くのは非常に困難です。

http://samy.pl/evercookie/

私がこの問題に取り組み、不正投票と戦わなければならなかった別の方法は、電子メール アドレスを要求することでした。その場合でも投票はできますが、電子メール内のリンクをクリックするまで投票はカウントされません。これは完全に登録するよりも簡単でしたが、不正投票のほとんどを排除するのに非常に効果的でした.

于 2010-10-19T16:26:58.303 に答える