Решение на стороне клиента, основанное на файлах cookie или localStorage, будет охватывать честного пользователя одним браузером, что является большинством случаев (так что вы можете сделать это). Он вообще ничего не сделает для предотвращения мошенничества со стороны злого умысла и любого количества технических знаний, поэтому вы захотите также включить проверку на другой стороне границы доверия (на сервере).
Решительный злоумышленник сможет набить урну для голосования, но у вас есть несколько способов предотвратить случайные злоупотребления.
Как уже упоминалось, одно простое решение — разрешить один голос на IP-адрес. Неплохая идея, но посмотрите это обсуждение, почему это тоже не очень хорошая идея: Ограничить 1 голос с IP-адреса? Это может помешать законным пользователям голосовать (представьте, что два соседа по комнате используют личный маршрутизатор), и это не остановит вброс бюллетеней (я мог бы проголосовать дома, а затем снова на работе). Это становится еще более сложным, если учесть, что интернет-провайдеры, такие как AOL (так гласит народная мудрость, по крайней мере, я только предполагаю, что это все еще верно), которые часто переназначают адреса (возможно, якобы для защиты конфиденциальности своих пользователей).
Вам может потребоваться капча. Это обеспечивает такой же уровень защиты, как и требование подтвержденного адреса электронной почты, с немного меньшей нагрузкой на ваших пользователей. Разумеется, ни один из этих подходов не является гарантией. Любой владелец доменного имени имеет бесконечное количество уникальных рабочих адресов электронной почты, и если для влияния на результат опроса достаточно нескольких десятков голосов, то злоумышленнику достаточно терпения, чтобы пройти несколько десятков проверок капчи.
Более сложное решение состоит в том, чтобы запрашивать учетные записи пользователей, тщательно следить за признаками злоупотреблений и блокировать учетные записи, подозреваемые в мошенничестве. Я предполагаю, что это далеко выходит за рамки всего, что вы готовы сделать. Разве что кто-то опубликовал бесплатную универсальную реализацию такой штуки?
person
Chris Martin
schedule
28.11.2012