Intereting Posts
Ajax / jQuery для PHP и обратно? Phonegap В запрошенном ресурсе присутствует заголовок «Access-Control-Allow-Origin». Происхождение 'null', следовательно, не допускает доступа Вложенный массив в список HTML Остановите скрипт (без фатальной ошибки) после определенного количества времени запроса / разбора Как отобразить выбранные значения в раскрывающемся списке нескольких вариантов в приложении Yii2? Kohana 3.3 Не работает из подкаталога Как настроить тесты модуляции базы данных в Symfony2 с помощью PHPUnit? Пользовательский формат Jqgrid использует скобку (), если значение negatif Строковая переменная Javascript, содержащая PHP-код «Профилировщик с визуализацией» для PHP с «полной визуализацией backtrace»? Кнопка блокировки AngularJS submit в форме symfony2 jQuery – вызов ajax каждые 10 секунд Как автоматически отображать кнопку, если условие в PHP верно? Как найти часовую разницу между двумя датами в PHP? Использование моделей в CodeIgniter

Предотвращение двойного голосования

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

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

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

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

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

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

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

Файлы cookie и идентификаторы сеансов помогут, хотя оба могут быть потеряны при закрытии браузера (если пользователь разрешил их удалять). Тем не менее, они дадут вам определенную степень точности (например, ленивые избиратели не потрудились закрыть и снова открыть свои браузеры).

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

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

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

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

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

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