Лучший способ предотвратить игры с анонимным голосованием

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

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

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

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

7 ответов


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

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


один шаг к системе аутентификации пользователя, но не все осложнения:

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

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

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


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

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

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

Multi-browser обман не будет затронут, конечно.


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

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

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

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

другой пример: если ваша электронная почта myuser* @gmail.com*, вы смогли использовать "myuser+1@gmail.com" myuser+2@gmail.com, etc (знак плюс и текст после они игнорируются и доставляются на ваш счет). Вы также можете включить точки в вашем имени пользователя (my.user@gmail.com). (Это только работает на адресах gmail!)

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

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

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


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

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

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

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

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


хотя я, вероятно, не сделал бы этого сам, но посмотрите на эти куки, от них довольно трудно избавиться:

http://samy.pl/evercookie/

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


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

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

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