2010-10-19 2 views
13

Я собираюсь написать метод голосования для своего сайта. Я хочу, чтобы метод останавливал людей, голосовавших за одно и то же дважды. До сих пор мои мысли были:Лучший способ предотвратить азартные игры с анонимным голосованием

  • Капли печенье раз голосование завершено (восприимчивая к мульти-браузера играм)
  • Log IP-адрес на голосование (это произойдет сбой в прокси/корпоративные среды)
  • Force логины

Мой сайт не является учетной записью, основанной как таковой, хотя она объединяет данные Twitter, поэтому существует возможность использования Twitter OAuth в качестве средства идентификации.

Какие существуют существующие системы и как они это делают?

+0

Возможный дубликат [Лимит 1 голос за IP-адрес?] (Http://stackoverflow.com/questions/1246705/limit-1-vote-per-ip-address) – bzlm

ответ

11

Лучше всего было бы запретить анонимное голосование. Если пользователь вынужден регистрироваться, вы можете сохранить идентификатор пользователя с каждым голосованием и убедиться, что он голосует только один раз.

Подход cookie очень хрупок, так как cookie можно легко удалить. Подход IP-адреса имеет тот недостаток, который вы сами описываете.

+0

Могу ли я использовать их twitter login в качестве входа на мой сайт? Так что, пока они вошли в твиттер, они могли получить доступ к моему сайту? – Chris

+0

@ Крис, да. Самый простой способ, вероятно, будет заключаться в использовании стороннего поставщика SSO, такого как http://www.janrain.com/ –

+0

Спасибо, я думаю, это будет работать очень хорошо! – Chris

3

один шаг к системе Идент.польз, но не все из осложнений:

Получить пользователю ввести свой адрес электронной почты и подтвердить свой голос, вы бы не искоренить игры, но вы бы сделать его более трудным для геймеров зарегистрироваться другой адрес электронной почты, а затем голосовать и т.д.

Возможно, стоит дополнительный шаг.

Дайте нам знать, что вы в конечном итоге собираетесь.

+0

Это будет работать так хорошо. У меня есть свой домен. Я могу получить любое электронное письмо, которое я хочу в нем. Другой пример: если ваш адрес электронной почты - [email protected], вы можете использовать [email protected] [email protected] и т. Д. (Текст после + игнорируется и доставляется в ваш аккаунт). Вы также можете включить точки в свое имя пользователя. (Это работает только на адресах gmail!) –

1

Различный подход, просто чтобы обеспечить альтернативу:

Предполагая, что большинство людей знают, как вести себя или просто не могут быть обеспокоены, чтобы шалить, только задним числом очистить голоса. Это также обеспечило бы голосование, ненавязчивое для избирателей.

Таким образом, установить куки, журнал каждый голос, а затем (или на интервале времени?) Пройти через результаты и удалить дубликаты на основе значений печенья, комбинации IP/UserAgent и т.д.

Я бы предположить, что не активно блокируя несколько голосов от одного и того же человека, позволяет с минимальным использованием технических методов обхода, а результаты легко очищаются.

Как нисходящая сторона, вы не можете показывать фактические подсчет голосов в реальном времени на пользовательском интерфейсе, или брови будут подняты, когда куча голосов просто исчезнет.

3

Если вы хотите пойти с печеньем в конце концов, используйте evercookie.

evercookie является JavaScript API доступен, который производит чрезвычайно постоянные куки в браузере. Его цель заключается в том, чтобы идентифицировать клиента даже после того, как они удалили стандартные файлы cookie , файлы cookie Flash (локальные общие объекты или LSOs) и другие.

evercookie выполняет это путем хранения данных cookie в нескольких типах механизмов хранения, доступных на локальном браузере. Кроме того, если evercookie обнаружил, что пользователь удалил любой из типов файлов cookie, вопрос воссоздает их, используя каждый доступный механизм.

Разумеется, это не повлияет на использование нескольких браузеров.

+1

Будьте осторожны: если вы посетите сайт evercookie, он (попытается) поместить в ваш браузер вечнокуки. Комментарии к недавнему сообщению Брюса Шнайера содержат интересное обсуждение сайта: http://www.schneier.com/blog/archives/2010/09/evercookies.html – APC

+0

@APC Почему это требует предупреждения? Я думаю, что большинство сайтов, когда их посещают, пытаются поместить куки в мой браузер. :) – bzlm

+0

Вопрос о evercookies заключается в том, что программное обеспечение попытается наложить на него один из своих uber-файлов cookie, даже если вы настроили браузер не принимать сторонние файлы cookie. Конечно, импост действительно не заботится. Но некоторые люди довольно аэрируются по этой теме. – APC

1

Хотя я, вероятно, не будет делать это сам, но смотреть на эти печенья, они довольно трудно избавиться:

http://samy.pl/evercookie/

Другой способ, который я должен был подойти к этой проблеме и борьбы мошенничество с голосованием, требовал адрес электронной почты, тогда человек все еще мог голосовать, но голоса не засчитывались, пока они не нажмут на ссылку в письме. Это было легче, чем заполнено при регистрации, но по-прежнему очень эффективно устраняло большинство мошеннических голосов.

+0

Упс, увидел, что кто-то уже предложил evercookie – Andre

+0

Кто-то предложил и электронную почту. :) http://stackoverflow.com/questions/3968328/best-method-to-prevent-gaming-with-anonymous-voting/3968430#3968430 – bzlm

1

Если вы не хотите, чтобы пользователи принудительно регистрировались, рассмотрите этот evercookie, но запустите java-скрипт, чтобы включить ведение журнала!

Это evercookie тривиально блокировать, потому что это java-скрипт. Злоумышленник вряд ли использовал бы браузер, с завитой он мог бы генерировать запросы запросов. Hovewer такие инструменты обычно имеют плохую поддержку javascript.

Почта еще проще обмануть. Когда вы запускаете свой собственный сервер, вы можете принимать все адреса электронной почты, поэтому у вас будет практически неограниченный пул адресов для использования.

3

С какой игрой вы хотите защитить себя? Кто-то создает пару ботов и бомбит вас тысячами (миллионами) запросов? Или кто-то, у кого нет лучших вещей и чтобы попытаться сделать 10-20 голосов?

Да, я знаю: оба - но какая из них ваша главная забота здесь?

Использование CAPTCHA вместе с голосованием по электронной почте (отправьте ссылку на письмо, чтобы подтвердить голосование) может хорошо работать против ботов. Но человек может более или менее легко использовать систему электронной почты (как я комментирую в одном ответе и публиковать здесь снова)

У меня есть собственный домен, и я могу получить любое электронное письмо, которое я хочу в нем.

Другой пример: если ваш адрес электронной почты MyUser * @ gmail.com *, вы можете использовать "[email protected]" [email protected] и т.д. (знак плюс и после текст будет проигнорирован и доставлен на ваш счет ). Вы также можете указать точек в вашем имени пользователя ([email protected]). (Это только работы по GMAIL адресам!)

Для защиты от людей, я не знаю, когда-либо печенье, но это может быть хорошим выбором. Использование OAuth, интегрированного с твиттером, FB и другими сетями, также может работать хорошо.

Кроме того, помните: требующие электронной почты кого-то голосовать голосуют многие люди! Вы получите гораздо меньше голосов!

Другой вариант: ограничить количество голосов, в которых ваша система принимает с каждого ip в минуту (или час или что-то еще). Чтобы защитить от распределенных атак, ограничьте общее количество голосов, которое ваша система принимает в течение определенного периода времени.

+0

oops, я только что заметил, что это старый пост! –