2012-01-22 4 views
6

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

Какая у вас лучшая техника? Нужно ли использовать captcha для большей защиты от спама?

Ожидается, что количество голосов составит миллионы, и объект не очень критичен, если я получу 95% -ную точность, что было бы хорошо. Благодарю.

+0

* Не очень критичен *? 95% -ая точность уже огромна. –

+0

добавить файл cookie. или хранить IP-адреса, если вы действительно боитесь. – neeKo

+1

Ваш лучший вариант здесь - установить долговременный файл cookie, указывающий, что пользователь ранее голосовал. Всегда будет способ обмануть систему, особенно если вы не сохраняете/не отслеживаете учетные записи пользователей. – SeanNieuwoudt

ответ

4

Вы можете объединить эти два метода:

  • Добавить печенье, чтобы предотвратить несколько голосов от одной и той же машине
  • Log IP-адреса и предотвращения голосования более чем заданное число раз с того же адреса (для пример, 5 раз в тот же час).

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

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

1

Печенье и Session Идентификаторы поможет, хотя и могут быть потеряны, когда браузер закрыт (если пользователь имеет это позволило удалить их). Тем не менее, они дадут вам определенную степень точности (например, ленивые избиратели не потрудились закрыть и снова открыть свои браузеры).

Использование IP-адреса также будут работать, но поскольку @Michael Dillon сказал, что люди на одном и том же IP-адресе (тот же маршрутизатор) не смогут проголосовать.

1

У вас есть несколько вариантов, некоторые или все из которых вы можете использовать.

Вы можете записать IP-адрес, а затем проверить его на IP-адрес, но это не указывает на конкретное лицо, просто компьютер, а иногда и не только на один компьютер.

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

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

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