12

PHP/MySQL Web サイト用の投票システムを作成していますが、1 人のユーザーが 1 回だけ投票できるようにしたいと考えています。これを行う良い方法は何ですか?これまでのところ、次のことを考えて半実装しました。

  • IP と投票を使用して、データベースに個々の投票を保存します。これによりかさばりが生じますが、各ユーザーが 1 票を確実に獲得できます。

  • ユーザー側に Cookie を保存して、投票したかどうかを確認します。これは最も単純ですが、明らかにユーザーは Cookie を無効にできます。

最も実用的なアプローチは何でしょうか? 他の提案は大歓迎です。

4

7 に答える 7

26

手に負えないほど完璧: (固有の政府番号)

  • ユーザーは、社会保障番号やパスポート番号などの検証可能な一意の識別子を使用して投票します

現実に近い: (電子メール/サードパーティ認証)

  • ユーザーは、電子メール アドレスとパスワード (または google/facebook) を使用してアカウントを登録します。
  • 1メールアドレス=1票
  • ユーザーは Cookie をクリアして追加の投票を取得することはできません。アプリは共有 IP で 1000 をシャットアウトしません。

善意だが偽りのふり(IP アドレス)

  • オフィス ビル: 同じ外部 IP 上の数千人のユーザーが締め出される
  • 大学: 教室でワイヤレスに接続します。投票。次の教室へ移動。再接続して再度投票する

クラッシュ・アンド・バーン(クッキー)

  1. 投票
  2. ctrl シフト デル エンター
  3. 投票
  4. 繰り返す
于 2011-10-15T05:58:20.463 に答える
4

システムを監査する機会があれば、できるだけ多くの情報をデータベースに保存する必要があります。多くのログを記録すると、不正投票があったとしても、それを検出してそれらの投票を取り消すことができる場合があります。

2 番目の方法は完全に安全ではありません。ユーザーが再度投票したい場合は、Cookie を削除するだけで済みます。投票が行われたことを検出する方法はありません。

重要な注意点

IP アドレスと人の間に 1 対 1 のマッピングはありません。多くの IP アドレスを持つ人もいれば、1 つの IP アドレスを共有する人もいます。

于 2011-10-15T05:27:24.303 に答える
3

完全に信頼できる方法は難しいでしょう。どちらのアイデアにも問題があります.Cookieを無効にすることができ、1人のユーザーが多くのIPを持っているか、多くのユーザーが同じIPを共有している可能性があります. ユーザーに登録を強制し、登録されたアカウントごとに 1 つの投票のみを許可する方がよいでしょうが、そうすると誰かが複数のアカウントにサインアップする可能性があります。アカウントごとに一意の電子メール検証を強制すると、これは多少軽減されますが、複数の異なる電子メールにサインアップすることで回避できます.

基本的に、対策を講じるたびに回避が難しくなりますが、そもそも投票の労力も増加します。検証可能な既知の固有のもの (SSN、パスポート番号) に票を結びつけることを除けば、どのような手段を講じても回避できます。疑わしいと思われる投票を手動で確認することは、他の手段に加えて、不正な投票を減らすのにも役立ちます. 使いやすさとセキュリティの境界線をどこで引くかは、1 票の制限を適用するためにどれだけ必要かによって異なります。

于 2011-10-15T05:48:35.543 に答える
2

何を選択しても、IP アドレスはまったく安全ではありません。ユーザーは基本的に別の場所からアクセスして再度投票することができます。クッキーは解決策ですが、削除の可能性があるため最適化されていません (ユーザー認識プロセスのリスクがあります)。オプションを安全に記録できるようにするには、ユーザーからのより多くのデータを処理する必要があります。

システムがより大きなシステムのサブシステムである場合、より大きなシステムで共通のフィールドを使用して、現在のシステムのユーザーを識別することができます。

お役に立てれば、

于 2011-10-15T06:13:51.007 に答える
2

Mark Byers が言ったように、一部の国では動的 IP アドレス (ベトナムなど) を使用している可能性があるため、ユーザーが接続を確立する (またはモデムをリセットする) たびに IP アドレスが一貫して変化します。ただし、IP アドレスが静的な国でシステムが構築されていることを確認できれば問題ありません。

Cookie ソリューションは少し安全ではないようですが、ユーザーのほとんどが非技術者である場合、トリック (Cookie を削除して再度投票すること) を認識できません。ユーザーがこの手法について何も知らないことがわかっている限り、私はこの方法を好みません。

email verification結果がより正確になるように、投票に参加することをお勧めします。ユーザーは数個の電子メール アドレスしか持っていない可能性があり、投票するためだけに新しいアドレスを作成したくありません。

于 2011-10-15T05:56:08.943 に答える
2

ユーザーが 1 回だけ投票するようにする唯一の方法は、ユーザー アカウントを作成することです。

クッキーは消去できます

IPアドレスは変更するためのものです。(また、複数のユーザーが 1 つの IP アドレスを持つこともできます)

于 2011-10-15T18:18:00.233 に答える
1

IPと投票を使用してデータベースに個々の投票を保存します。これによりかさばりが生じますが、各ユーザーが1票を獲得できるようになります。

それは良いですが、2番目より遅いですが、それでも私はこれをお勧めします。

ユーザーの側にCookieを保存して、ユーザーが投票したかどうかを確認します。これは最も単純ですが、明らかにユーザーはCookieを無効にすることができます。

あなたは正しいですその安全ではありませんが少し速いですが私はこれが好きではありません

于 2011-10-15T05:36:28.083 に答える