Как я могу запретить пользователям голосовать более одного раза? - PullRequest
5 голосов
/ 28 декабря 2011

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

  1. с использованием cookie .
    проблема : пользователи могут удалять куки и возвращаться к голосованию снова и снова ..

  2. с использованием таблицы базы данных.
    Проблема : пользователям не нужно регистрироваться на моем сайте!

Итак, как мне решить эту проблему?

Ответы [ 4 ]

6 голосов
/ 28 декабря 2011

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

Как правило, cookie это приемлемый способ сделать это. Да, куки могут быть удалены, но если желание предотвратить повторное голосование является , что важно, то регистрация - единственный эффективный способ предотвратить это. Любой другой механизм может быть побежден теми, кто хочет. Вы можете использовать что-то вроде Evercookie , но я не думаю, что это хорошая практика. Если вы сделаете процесс регистрации простым, но эффективным, это сделают некоторые пользователи.

IP-адрес так же несовершенен, как и большинство повторных IP-адресов, которые не назначаются статически. Кто-то может сбросить свой модем и получить новый IP-адрес. Или, что еще хуже, кто-то может сбросить свой модем, получить IP-адрес, который уже посещал сайт, и не сможет голосовать. Другой сценарий - пользователи позади NAT. Если 200 человек используют IP-адрес вместе с NAT, то только один из них сможет проголосовать.

Вы могли бы проявить творческий подход к IP-адресу. Продолжайте использовать куки, потому что это будет эффективно. Если вы начинаете обнаруживать несколько голосов с одного и того же IP-адреса (потому что они очистили свои куки), отобразите CAPTCHA . Если это не кто-то пытается злоупотребить системой, то он все равно получает возможность проголосовать. Это поможет победить автоматическое голосование и настолько замедлить пользователей, что злоупотребление вашей системой голосования не стоит их времени. Это также может быть побеждено, это то, какой уровень эффективности приемлем для вас. Даже регистрация не на 100% эффективна, но, вероятно, самая эффективная. Что может помешать кому-либо много раз регистрироваться с разными адресами электронной почты?

5 голосов
/ 28 декабря 2011

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

Если возможно, вы можете попросить пользователя зарегистрироваться с его идентификатором facebook / google, как это делает stackoverflow

0 голосов
/ 28 декабря 2011

Этот сайт (Stack Overflow) делает это правильно, путем регистрации.IP - действительно плохая идея, потому что все люди за прокси / сервером не могут голосовать.У большинства людей есть несколько браузеров, вам даже не нужно удалять cookie для голосования, чтобы снова проголосовать, просто используйте другой браузер.Как уже упоминалось, OpenID - это маршрут с наименьшим влиянием + самый высокий уровень безопасности.Они могут обойти это через несколько учетных записей.

0 голосов
/ 28 декабря 2011

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

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