На веб-сайте, над которым я работаю, есть конкурс, в котором пользователи могут голосовать за понравившуюся работу. Заказчик хочет предотвратить фальсификацию голосования.
Возникла идея записывать IP-адреса всех тех, кто голосовал, но я не уверен, что это хорошее решение. Внутренние IP-адреса, конечно, плохая идея, но как насчет внешних адресов? Проблема, которую я вижу в этом, заключается, например, в том, что целая компьютерная лаборатория колледжа может работать с одним внешним IP-адресом. - может быть, даже весь кампус. Если с IP-адреса разрешено только ограниченное количество голосов, этот предел может быть достигнут очень быстро с помощью полностью законных голосов.
Кто-нибудь знает лучший способ реализовать это? Наверняка это было сделано раньше.
Любая помощь приветствуется. Заранее спасибо.
Вы хотите открыть голосование только для пользователей, которые были зарегистрированы как минимум неделю / месяц / и т. Д. - но это, вероятно, вам не поможет, потому что если вы поднимаете проверки IP, это звучит так, как будто вы не вообще не аутентифицируют ваших пользователей.
Если вы пытаетесь устранить мошенничество и не аутентифицируете своих пользователей, вы, вероятно, вскроете руки и уйдете. Если вы можете быть удовлетворены минимальным сокращением случайного мошенничества, вы можете сделать несколько вещей.
Проверка IP-адресов избирателей - это относительно недорогой механизм, позволяющий сдерживать множественное голосование, если вам больше нечего делать, но, как вы заметили, это может привести к затратам с точки зрения законных пользователей, лишенных права голоса, и ничего не делает. чтобы предотвратить суммирование голосов за счет набора непользователей, каждый из которых будет иметь законно отличающийся IP-адрес (например, «Привет, Slashdot / Reddit / Pharyngula / IRC-Channel-X, все голосуют за этот вариант в этом опросе!») . Однопользовательское заполнение по-прежнему может выполняться с ботнетами или большими списками прокси или учетными записями на нескольких машинах (то есть в любой университетской лаборатории, не находящейся за NAT).
То, что вы ищете, - это некоторая информация, которая будет уникальной для пользователя. Если у вас его в настоящее время нет, вы можете создать его, отправив пользователям одноразовые токены, что в основном представляет собой голосование за приглашением. Конечно, это все еще проблематично, если ваши пользователи еще не дали вам разрешение на отправку им сообщений по электронной почте или вы не знаете, кто ваши пользователи.
Если вы можете соблазнить своих пользователей зарегистрироваться на веб-сайте, тогда вы сможете аутентифицировать голоса таким образом, но опасно начинать это одновременно с голосованием, потому что вы снова сталкиваетесь с возможностью набора персонала.
Вы можете задавать вопросы вместе с вашим опросом, на которые любые реальные пользователи должны иметь возможность легко ответить, а не пользователи - нет, и фильтровать результаты таким образом, но вы можете обнаружить, что ваши пользователи знают меньше, чем вы думаете, и ничто не мешает фальшивым избирателям от получения шпаргалки со всеми ответами.
Похоже, вы ищете способ ограничить ввод данных только неизвестным числом совершенно неизвестных людей и запретить им вводить данные более одного раза или изменять свою внешнюю личность. Это не произойдет.
Все зависит от того, насколько вы хотите помешать пользователю.
Если не считать ограничения по IP, вы мало что можете сделать, если действительно заботитесь о том, чтобы эти голоса были уникальными. Вы можете захотеть сохранить проголосовавшие IP-адреса в нереляционной базе данных, чтобы увеличить скорость запроса и уменьшить использование ресурсов.