2011-11-24 15 views
5

状況

私は誰でも投票できるアンケートウェブサイトを開発しています。明らかに、調査に関連する複数の登録を防止する必要があります。私はすべてのユーザーが自分のGoogle、Facebook、またはTwitterアカウントでログインするように強制します。しかし、それぞれにアカウントを持っている場合は3回認証でき、同じプラットフォーム(Googleには3つのアカウントがある)で複数のアカウントで認証することができます。だから私は彼らのIPアドレスを保存すると思ったが、彼らはまだプロキシを使用することができます。私はPHP's get_browser()でHTTPユーザーエージェントを維持することができますが、依然としてブラウザーを変更することはできます。 OSをブラウザよりも簡単に変更できるように、正規表現でOSを抽出することができます。ジオロケーションもあります。たとえば、the Google Map APIです。複数の登録を防止するための方法アンケートのウェブサイトで複数の登録を防止する

質問

  • ?どのようなテストをすることができますか?
  • これらのテストを埋め込む方法は?どのような順序で実行しますか?
  • すでにこの種のソリューションを導入しましたか?
+0

類似:http://stackoverflow.com/questions/8099388/prevent-multiple-entries-using-php – Tim

+4

落とし穴:良い点: IPアドレスは、ただ1つの登録 – Tim

+0

@Timにハウスホールドを制限することができます。 –

答えて

3

携帯電話でユーザーを確認するには、コードを入力してテキストメッセージを送信します。これにより、投票数がユーザーが所有する携帯電話番号の数に制限されます。

+0

興味深い。あなたはそれについての良い記事を知っていますか? –

+0

私は知らない。しかしアイデアはシンプルです:SMSゲートウェイを見つける(そこには多くがあります)、ユーザに電話番号を尋ね、その番号にSMSでSMSを送信し、ユーザにコードを入力するように依頼します。 – werewindle

+0

問題は、プロセスが少し長いことです。ユーザーは投票するだけでサイトに来て、Facebook&coでログインし、電話番号を入力してからSMSを待ってから、コードを入力して最終的に投票できるようにする必要があります。私はこの方法でビジターの損失率を知りたいのです。 –

4

確かに唯一の方法は、シリアル番号(社会保障番号)やハードウェア識別子(RSAキー)など、個人を一意に識別する何かを使用することです。次の最も良いことは、通常は姓名を特定するクレジットカードを要求することです。他のすべての試みは簡単に壊れる可能性があります(電話番号、地理位置などの2段階認証)。ブラウザーで送信されたヘッダーは簡単に偽装することができます(ジオロケーション、IPアドレス、ユーザーエージェントはすべてヘッダーです)。あなたが言ったように、複数のGoogle/Twitterアカウントを作成するのは非常に簡単です。

+1

複数のハードウェアIDを購入することも簡単ですし、SSNの検証は難しいです。 – CodesInChaos

+0

はい、ハードウェア識別子を発行して各ユーザーに追跡する場合を除きます。私はあなたが取るべきアプローチではないと通常は同意します。 –

1

あなたが言及これらのテストは、複数回の登録から一部のユーザーを防ぐことができますが、決定した利用者は、彼らが本当にしたい場合は、これらの措置を回避することができるようになります。

Google、FB、Twitterで複数のアカウントを作成し、ブラウザのプラグインで簡単にユーザーエージェントを偽装できます。大量のプロキシの後ろに隠れてジオロケーションを無効にすることができます。あなたができる

もうひとつは、プロキシ検出を追加し、あなたは彼らがプロキシの背後にあると思われる場合、登録/投票を防ぐためにしようとしています。

1

どのように物理的な人につき1つの電子メールアドレスを付与し(例えば.GOV?として、あるいはTLDの、)ドメインから有効な電子メールアドレスを必要とするでしょうか?

はちょうどあなたが文字通り誰でも投票できるようにしなければならない場合、それは可能ではないかもしれません、ここでの提案を行います。

1

ほとんどの場合、妥協する必要があります。あなたのユーザーが異なっていることを100%確実にすることは、ほとんど不可能になります。合理的なアプローチの1つは、Twilioのようなサービスを使用し、ユーザーが単純な電話でサイトが確認できる一意の電話番号を要求することです。

あなたはおそらくも、それは不便複数のアカウントを使用するようにしたいでしょう。あなたのケースでは、自動化されたシステムによって投票が入力できないように、投票プロセスでキャプチャを使用することができます。このようにして、たとえ誰かが10または50の電話番号を持っていても、結果を有意義に変更するためにかなりの努力を払わなければなりません。

1

まず、ユーザーを何らかの形で一意に識別する必要があります。あなたが言及したいくつかのものがあります:

  1. メールアドレス
  2. IPは、上記のすべてが偽装しやすい
  3. HTTPユーザーエージェント

に対処します

  1. 一つの缶複数のメールアカウントを作成する
  2. プロキシ。誰かがプロキシの背後にいるのかどうかを調べようとしたが、利用可能なエリートプロキシを持つユーザーは見つからなかった。別の問題は、複数のユーザーが単一のIPを共有している可能性があることです。
  3. ユーザエージェント情報が一意にユーザがSSNで識別

何かを変更することができます。問題は、ネット上にいくつかの発電機があるので、いくぶん簡単に偽造することができるということです。

問題は、その人が本当に自分が主張している人物であることを確認することは本当に本当に難しいことです。解決策は、ユーザーが複数の投票を行うことを可能な限り困難にすることです(単一の投票であることが重要でない場合)。

これは、たとえばSMSによる検証を使用して解決できます。ユーザーが複数の電話番号を使用して取得するのは難しい/不便です。

1

ウェブサイトに登録できる電子メールの数は1つだけです。

次に、各IPから一度投票できるようにしてください。明らかにルーターの背後にある潜在的な有権者を阻止しようとしているため、これは実行可能ではないかもしれません。

各投票者のユーザエージェントをチェックして、不一致を試してみることができます。

ユーザーに固有のものは基本的にチェックする必要がありますが、ユーザーサーバー側を完全に検証することはできません。

すでに電話番号を使用して提案されているように、スパム投票者を減らすもう1つの方法です。

-1

アカウントに電話をかけるように要求することは、一括登録を防止するための非常に一般的な方法です。これらのサービスを提供する会社はいくつかあります。

関連する問題