web-dev-qa-db-ja.com

オンラインコンテストでの不正行為(追加投票)を防ぐ方法は?

オンラインコンテストでの不正行為と投票者による不正の防止…

ユーザーがエントリーに投票することを含む、さまざまな種類のオンラインコンテストを開催しています(通常、ユーザーごとに1日1票)。賞金は数百ドルから数千ドルの範囲です。過去4年間、私たちは人々が不正を行おうとする多くの方法に遭遇し、それぞれのケースでクーター対策を実施してきました。現状では、次の方法を使用しています。

認証
ユーザーはアカウントを作成し、認証(ログイン)する必要があります。これは匿名の投票詰め込みを除外します。

メール確認
ユーザーは、システムメールのリンクをクリックして自分のメールアドレスを確認し、自分のアドレスを所有し、アクセスできることを確認する必要があります。これにより、ランダムな(必ずしも有効ではない)メールアドレスを使用してアカウントをまとめて作成することはできなくなります。また、1つのアカウントでは処理が少し遅くなり、多くのアカウントを作成しようとすると処理が遅くなります。

Gmailアドレスエイリアスなし
ユーザーは、localpart + suffix @ gmail.comなどのインスタントエイリアスアドレスを使用できません。それは潜在的な詐欺師を遅くします。

追加の対策
私たちは、同じプライベートドメイン(user1 @ smithfamily.com、user2 @ smithfamily.comなど)からのメールアドレスの文字列について、サインアップと投票名簿を定期的に監査します。ドメイン間で類似した名前、ユーザー名、メールアドレスの「ローカル部分」も探します。

また、投票結果の更新は毎日表示されるため、即時のフィードバックはありません。そうすれば、誰かが不正行為をしようとすると、結果が表示されるまでに1日かかります。そして、彼らが大きくならなければ、彼らの方法が成功したかどうかは確実にわかりません。私たちは可能な限り「ブラックボックス」になるように努めます。

言うまでもなく、これはすべて疲労し、スケールアップがますます難しくなっています。コンテストで "1人1票"に近づき、プロセスの必要以上にユーザーに負担をかけないようにするための簡単なソリューションが必要です。

人を確認するためにSMSを使用してアカウントに携帯電話番号を添付することの可能性を調査しました;陪審はこのアプローチについてまだ出ていません: https://ux.stackexchange .com/questions/15980/ways-to-avoid-online-contest-voting-fraud-is-sms-account-verification-too-much / 、および Can SMSテキストメッセージを使用して、ショートコードシステムを通じて個人の一意の身元を確認しますか?

いくつかの提案には、クレジットカード、郵送による確認、評判ポイントの使用などが含まれていますが、これらはすべて、対象ユーザーにとって非常に面倒です。

バックエンドで1)不正行為者を特定し、さらに重要なことに2)不正行為を防止するために、さらに何ができるでしょうか?


[〜#〜]更新[〜#〜]

私たちは、開発者の1人が「人々が不正行為をするようにすればするほど、不正行為を検出することが難しくなる」と指摘したので、不正防止を漏れないようにしないことにしました。代わりに、三面バチューと呼ばれる中世の中国の狩猟技術を利用しています。ほとんどの方法で不正行為を行うことは非常に困難ですが、他の方法では比較的簡単にすり抜けることができるため、投票結果が更新される前に何を探して排除するかが正確にわかります。

投票のパターンを調べます。たとえば、1人の参加者が一連の均等に投票された投票を受け取り、それらの投票に関連付けられているアカウントを調べます。アカウントにパターンがある場合は、それらのアカウントを削除し、関連する投票が削除されます。

25
Taj Moore

一意のIDを必要としないように設計されたシステムを通じて、何かを一意に識別しようとしています。 サードパーティ(通常は物理的)の識別子に結び付けて検証を行うと、これは不可能になります。代わりに、自動化や迅速な結果を妨げる方法で投票を完全に制限することが最善の策です。
ご使用のシステムがサポートしている場合は、いくつかの基準に基づいて投票に重みを付ける方法をご覧ください。

  1. アカウントの「年齢」(登録後)。ある年齢(コンテストの開始以降など)未満の投票を禁止します。
  2. エントリ数(他のコンテスト)。
  3. アカウントアクティビティ(アカウントは定期的にアクセス/使用されていますか?)-フォーラムやエントリへのコメントなど。
  4. サインアップ以降のコンテストでのユーザーによる投票の割合(「ターゲットを絞った」行動が明らかになる場合があります)。おそらく、さまざまな投票の受信者の数によってですか?
  5. スロットル投票は、コンテストごとの総投票数に基づいて、エントリごとに受け入れられました。しきい値を超えるものはすべて、レビュー用にフラグが付けられます。

これらはすべて、データベース/レポート側から実行可能である必要があり、派手なJavaScriptまたはその他のクライアント側コード(だまされる可能性がある)の必要性を否定します。

15
Clockwork-Muse

IPを確認する予定です(明らかに、これは大きなハードルではありませんが、それでも確認する必要があります)

あなたは自動化された不正行為を防止するためにキャプチャが必要です

(最終的に)手動または自動で、短い時間枠(自動化/スタッフィング)で大規模なサインアップのグループをチェックする必要があります。

「無料」のメールサービスを禁止すると、不正行為から大きなチャンクが削除されますが、場合によっては、ユーザーベースからさらに大きなチャンクが削除されます。

より多くの個人情報を入力してもらうと、少なくとも確認に役立ちます(名前と住所と電話は、どこかにリストされている電話に電話やSMSを送信しなくても、確認を追加します)

可能であれば、メールだけでなく、類似性の検出を全面的に行いたいと思います(後で同じようなメールを繰り返したり、メールで名前を繰り返したりする怠惰な詐欺師をキャッチするため)。

しかし、見かけ上はWebフォームのチートを防止する限り、何らかの一意の識別子が必要になります。これは、当然、ユーザーにとってははるかに大きなオーバーヘッドであり、サイトに必要なセキュリティが高くなるため、不機嫌になるユーザー数

SMSは電子メールアカウントよりも検証可能ですが、20,000以上のhotmail/gmail/yahooなどの電子メールアカウントにサインアップするのはそれほど難しいことではないため、使い捨ての電子メールアカウント/フォワーダーは無視されます。

自動呼び出しのオプションもあります(SMSセキュリティの問題のすべてではありませんが))

4
doyler

私があなたに誰かにライブ紙小切手を出すと言っているのが正しいならば、その場に置くための一つの手段はアドレスです。ラジオ局のように構成すると、世帯/住所ごとに1つのエントリのみが作成されるため、不正行為を防ぐことができます。そもそも誰かが不正行為をしないようにしようとすることに関しては、おそらくオンラインゲーム業界に注目したいと思うでしょう。 PunkBusterやVAC=などは、ゲームでの不正行為を完全に防止できませんでした。週に1回監査を実行し、投票前にユーザーがページに費やした時間を評価することをお勧めします。 GA(Google Analytics))で利用できます。ユーザーがページに滞在する必要がある時間のしきい値を設定すると、リンクをクリックしているスクリプトを検出するのにも役立ちます。

4
Woot4Moo

私は @ makerofthings7 に同意します -Prove は、政府のような単一のプロバイダーからの適切に検証可能な主張とともに、最終的に欲しいものに最も近いものです。ユーザーは(うまくいけば)依存サイトがインターネット全体で協力して追跡できるようにするOpenIDのような、かなり一意のIDではなく、「単一方向のID」のサポートを望んでいます。詳しくは Laws of Identity をご覧ください

それまでの間、ユーザーにFacebookのConnect(Googleプラス)のようなものを選択して登録することを要求すると、それらのビッグプレーヤーの(物議を醸す)取り組みを活用して、人々に本名、または少なくとも「1対1顧客"。

しかし、もちろん他の人が言ったように、あなたが何をしても、十分なインセンティブがあれば、人々は複数回登録する方法を見つけるでしょう。したがって、脅威モデルの他の要因に実際に起因します。登録の手間をかけたくない人を除外するリスクは何ですか、最終的な最終収益は何に基づいているかなど.

4
nealmcb

次のベータ版のアイデアは、政府機関が採用する際に役立つ可能性があります...マイクロソフトはU Proveと呼ばれるものに取り組んでいます。

http://www.Microsoft.com/u-prove

このアイデアは、市民が政府のSTSに対して認証を行い、一意のIDとその他の識別情報を使用してWebサイトにリダイレクトするというものです。

3

シンプルでローテクなソリューションがあると思います。コンテストの条件に3つの要件を導入します。

  1. 各ユーザーは、アカウントを作成するときに自分の名前とアドレスを指定する必要があります。
  2. コンテストを世帯ごとに1つのエントリに制限します。アドレスを使用して、同じアドレスを持つ複数のエントリを削除します。
  3. 当選者が選ばれた場合、小切手は当選したアカウントにある名前と住所の人にのみ発行されるというコンテストの条件に入れます。そのアドレスにその名前の人物がいない場合、賞品は他の誰かに再割り当てされます。誰かが勝ったとき、勝者のアドレスを確認するために何かを行います。たとえば、登録済みの証明書をそのアドレスに送信し、勝者がメールを受け取ったことを証明するように要求します。または、運転免許証のコピーを提示して、免許証にその住所を表示するように要求する。

これは、不正行為を防ぐためのものです。アカウントはいくつでも作成できますが、自分のアドレスを使用する場合、コンテストごとに1つのエントリしか送信できません。また、他の住所を使用している場合、アカウントが選択されていると賞品を受け取ることができません(住所ではないため、当選者の住所は賞品を受け取る前に確認されます)。

それは完璧ではありません-勝者の住所を確認するための手順によっては、詐欺師は複数のアカウントを作成できる場合があり、それぞれが別の友達の住所を一覧表示します-しかし、実際には十分かもしれません。

2
D.W.

コンテストがある場合好きな曜日は?次に、ユーザーテーブルのコピーを作成して、cont_101という名前を付けます。次に、コンテストの回答を含むテーブルを作成して、cont_ans_101という名前を付けます。

ここで、ユーザーが投票すると、cont_101のフラグがtrueになるため、ユーザーが投票し、cont_ans_101のカウンターが1つ増えます。

ユーザーが投票しようとしたとき、ユーザーテーブル(cont_101)のフラグをチェックし、それがfalseの場合は投票をカウントできます。そうでない場合は、ユーザーを禁止できます。