Задать вопрос

PHP Голосование для всех. Какая лучше защита от повторного голосования?

На сейте есть как зарегистрированные, так и нет, пользователи...
Голосование нужно для всех. И не должно быть связано с зарегистрированным пользователем.
Но как максимально защитить от повторов в рамках разумного?
Понятно что через vpn или прокси можно сделать повтор.
  • Вопрос задан
  • 1509 просмотров
Подписаться 7 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
AccessDenied80
@AccessDenied80
Web разработка
@D3lphi
Я бы сделал так: поставил каптчу (это самое главное) на голосование. Затем, ставил бы куку, а также писал (например, в БД) ip'шник проголосовавшего. Когда человек делает попытку проголосовать, проверяю, если есть кука или же ip присутствует в базе данных, отказываю в голосе. На 100% защитится от повторного голосования нельзя, но можно добавить несколько препятствий для "недобросовестного" юзера
Ответ написан
Комментировать
@cjitkul33
Собирать максимальное количество данных о компьютере/браузере (IP, разрешение экрана, цветность, и т.д. и т.п.), сливать в единую строку, делать MD5 и хранить этот MD5. Ставить куку, что проголосовал.
Перед голосованием, если нет куки проголосовавшего, то проверять данные на совпадение (MD5). Чем больше данных, тем больше шансов, что голосование будет корректно.
Это наиболее простой способ.

Более сложный метод: можно хранить параметры отдельно и проверять с учетом частичного совпадения. Распределять параметры по весам. Если вес совпавших параметров превышает допустимый, то значит посетитель уже голосовал.

Вообще, хорошей, но в то же время простой в использовании готовой библиотеки - не встречал, поэтому пару раз пришлось пилить свой велосипед.
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега PHP
♬♬
Никак не показывать при повторном голосовании, что голос НЕ учтен. Пусть накрутчики и «случайно» голосующие повторно полагают, что их голос засчитан. Даже сохраняйте такие голоса в БД, но помечайте как фейковые. А затем раз в сутки их выбрасывайте из общих показателей. Можно даже наоборот – полноценно учитывать фейковые голоса, но накидывать так же голоса прочим вариантам, нивелируя накрутку.

Это не даст легкого способа злодеям наладить механизм накрутки. Вслепую им будет труднее.

А в остальном – все те же, EverCookie и FingerprintJS 2. Подробнее почитайте хороший материал на Хабре: отпечаток браузера и т.п.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы