Как лучше всего ограничить голосование на нашем сайте? - PullRequest
0 голосов
/ 24 февраля 2009

У нас есть сайт, на котором пользователи могут голосовать. Каков рекомендуемый метод ограничения голосов?

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

Как лучше всего отправить голоса из браузера? Основной запрос GET / POST или AJAX? Нужно ли использовать какой-то предварительно сгенерированный идентификатор запроса?

Обновление: Мы не можем использовать регистрацию пользователя.

Ответы [ 6 ]

2 голосов
/ 24 февраля 2009

[...] пуленепробиваемый [...]

невыполнима.

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

Stackoverflow делает это довольно неплохо (недавно была запись в блоге об этом, "Новые ограничения на скорость ответов на вопросы" ) - в основном есть учетные записи, в которых вам нужно некоторое время активно участвовать, прежде чем вы сможете проголосовать , Тогда вы ограничены в скорости (по аккаунту), пока не участвуете немного дольше. Затем ограничения снимаются, поэтому вы не раздражаете более активных (более доверенных) пользователей.

Если вы просто хотите предотвратить причинное, «случайное» голосование, ограничение по файлам cookie и, возможно, также по IP (учитывая, что за одним IP-адресом может быть несколько пользователей). Если вы хотите попытаться предотвратить злоупотребление , требовать учетные записи, для которых вы не можете просто нажать «зарегистрироваться» (или, точнее, ту, для которой вы не можете написать сценарий «клик для регистрации 2000 раз»), хотя это не всегда возможно (или практически)

0 голосов
/ 18 февраля 2011

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

  • Разрешить новым пользователям регистрироваться.
  • Проверьте, аутентифицирован ли пользователь.
  • Проверьте, голосовал ли пользователь уже по номеру вызова, перед созданием нового голосования.
0 голосов
/ 24 февраля 2009
  • Использовать аутентифицированных пользователей
  • Не блокируйте IP
  • Не проверять голоса по cookie-файлам
  • Попробуйте использовать капчу, если один и тот же IP-адрес голосует несколько раз с разными аккаунтами

Если вы хотите разрешить неаутентифицированным пользователям, то вы обязательно должны использовать капчу, чтобы избежать ботов. Но все же я думаю, что лучше всего разрешить голосование только аутентифицированным пользователям. Вы можете сделать что-то вроде: пользователь младше 1 ч / 2 ч не может голосовать, чтобы боты не создавали аккаунты и не голосовали.

0 голосов
/ 24 февраля 2009

Пуленепробиваемого решения не существует, если только вам не требуется серьезная (банковская) аутентификация Тем не менее, основное решение заключается в использовании сессий (куки). Ограничение IP - очень плохая идея (например, я делюсь IP с примерно 20 другими людьми).

0 голосов
/ 24 февраля 2009

Это может помочь при запросе рекомендации bulletprof: База данных для голосования по контенту и дизайн приложения

0 голосов
/ 24 февраля 2009

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

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

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

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