Настройка безопасной системы голосования - PullRequest
2 голосов
/ 27 марта 2009

В настоящее время я отвечаю за настройку системы опроса (используя PHP).

Теперь, чтобы он был максимально безопасным и объективным, важно, чтобы посетитель мог проголосовать только один раз. Я думаю о проверке опросов по IP-адресу посетителя (от одного IP-адреса может быть только один голос) и, возможно, добавлю тест с проверкой на безопасность, чтобы убедиться, что боты не смогут войти после того, как они по какой-то причине прошли проверку IP-адреса. .

  1. Итак, проверка уникальности IP и капча. Но достаточно ли этого? Есть ли вероятность того, что один пользователь сможет изменить свой IP-адрес с помощью прокси-серверов или других неизвестных мне способов и проголосовать несколько раз с уникальными IP-адресами?

  2. Есть ли лучшие способы сделать это? Желательно без капчи.

Заранее спасибо.

Ответы [ 6 ]

5 голосов
/ 27 марта 2009

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

Проверка IP не является хорошей идеей по нескольким причинам. Как описано в других ответах, многие сети находятся за одним ip, и пользователи могут просто использовать другой компьютер с другим ip и голосовать снова.

OpenId

Используйте OpenId, чтобы идентифицировать пользователей и проверить, проголосовали ли они уже.

Регистрация пользователей

При желании вы можете разрешить пользователям регистрироваться самостоятельно, если у них нет учетной записи openid.

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

3 голосов
/ 27 марта 2009

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

  • электронная почта с кодом подтверждения. ИМХО излишнее, но зависит от того, насколько ты хочешь быть.
  • используйте сессию, чтобы проверить, кто проголосовал. Очевидно, не на 100% безопасно, но остановит 99% госзакупок.
  • используйте cookie, чтобы проверить, кто проголосовал. Как и выше, некоторые пользователи знают, как удалять куки.
  • использовать POST, игнорировать GET.
  • используйте комбинацию 2 или 3 из вышеперечисленных.

Если вы собираетесь использовать IP для проверки, не используйте просто REMOTE_ADDR, в сочетании с целыми X-Forwarded-For. Таким образом, вы не будете блокировать людей, соединяющихся через один и тот же прокси.

3 голосов
/ 27 марта 2009

Вы не можете создать 100% безопасную систему голосования.

  • Если это основано на регистрации / IP / cookie, пользователь может создать нового пользователя / получить другой ПК / удалить все cookie.

Но вы можете попробовать это с автоматическим предварительным фильтром + администратором в качестве постфильтра рабочий процесс:

  • Запретить множественное голосование с помощью фильтра cookie (или IP-адреса / свойства браузера / др.) автоматически .
  • В представлении администратора администратор может анализировать и удалять голоса вручную на основе IP-адреса или адреса подсети. Это не идеальное решение, но с помощью какого-то хорошего запроса (одни и те же голоса совпадают с одним и тем же IP / подсетью) администратор может легко удалить подозрительные голоса.

Один большой недостаток этого решения - необходимость администратора. Но, я думаю, идеального решения не существует.

2 голосов
/ 27 марта 2009

Не идите путем уникального Ip. Существует множество сценариев, в которых многие пользователи имеют одинаковый IP-адрес (например, итальянский ISP FastWeb, крупные корпорации и т. Д.). Кроме того, если у пользователя есть динамический IP-адрес, он может каждый раз менять свой собственный IP-адрес ...

Одним из лучших способов должно быть использование адреса электронной почты и файлов cookie. Пользователь сможет голосовать несколько раз (вы не можете избежать этого), но по крайней мере это займет некоторое время для каждого голосования.

1 голос
/ 27 марта 2009

для аналогичного проекта я сделал 2 проверки ... Я поместил куки, а также сохранил на сервере хэш от пользователей ip + user agent. Это кажется довольно эффективным, поскольку, даже если будет больше людей, использующих один и тот же IP-адрес, хеш с пользовательским агентом будет отличаться в большинстве случаев, поскольку он отличается для одного и того же браузера в зависимости от операционной системы и других установленных расширений.

0 голосов
/ 27 марта 2009

Не существует надежного способа предотвращения нескольких голосов. Проверка cookie - это еще один вариант.

По поводу Валидатина по ip адресу. Что если пользователь из сети, которой пользуются многие пользователи?

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