Как я могу запретить пользователям голосовать более одного раза в 1 час?

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

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

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

спасибо вы за любую помощь

EDIT: я не хочу заставлять пользователей входить в систему

5 ответов


нет 100% безопасного способа избежать людей, чтобы голосовать более одного раза в час, но вот несколько методов, чтобы сделать его более сложным для пользователей, чтобы обойти его:

  • разместить cookies на компьютере пользователя
  • войти их IP
  • хранить содержимое в локальном хранилище (только для пользователей с браузерами HTML5)
  • Если вы действительно хотите начать копать глубже, вы можете начать вводить ограничения на основе длины сеанса пользователей, сколько страниц они навигация перед голосованием, т. е. начало профилирования пользователей, которые пытаются обойти систему, и начать вводить ограничения на этих профилированных пользователей.

вы можете использовать cookies, но люди могут удалить их. Самый простой ответ, не заставляя их войти в систему (для чего они могут создать более одной учетной записи, если у них есть несколько писем и т. д.), Было бы трудно ограничить их, не имея возможности как-то обойти его.


  • таблицы памяти на сервере с ip адресами

  • evercookie

  • браузер отпечатков пальцев

  • требуется регистрация

  • задание cron для очистки таблиц один раз в час

  • http://code.google.com/p/mailvalidator/

  • составить список запрещенных доменов

посещение 10minutemail и скопируйте домен электронной почты и добавьте в список


вы против того, чтобы пользователям зарегистрироваться на вашем сайте для голосования? Я бы сказал, сделать это на основе учетной записи, а не IP. Многие пользователи могут быть за NAT, который назначил бы им все тот же внешний IP (думаю, работа или школа). В этом случае я бы сказал, что достаточно таблицы с четырьмя столбцами: идентификатор пользователя, идентификатор опроса, время голосования, Выбор. Если одна и та же комбинация id пользователя/poll id существует и время больше, чем сейчас минус один час, не позволяйте им голосовать


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

но вот что вы можете сделать:

1) настройте cookie на машине после голосования, но пользователи могут удалить cookie вручную

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

2bis) A учетная запись пользователя может получить право голоса только после 24 часов, может быть не подходит для вашего приложения

3) как переполнение стека, реализует механизм репутации на учетных записях пользователей, чтобы они могли голосовать только после того, как доказали, что они не просто боты или альтернативные идентификаторы