Подтвердить что ты не робот

Прекращение многократного голосования пользователей на веб-сайте

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

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

Cookies могут быть ответом, но опытный пользователь может удалить cookie. Любые лучшие идеи?

4b9b3361

Ответ 1

Извините, у меня нет полезного ответа, я просто хочу поделиться своим опытом.

Около 8 лет назад я работал на сайте, который проводил онлайн-опросы. Мы когда-то взломали некоторые боты, голосовавшие по некоторым из наших вопросов, несколько сот голосов в минуту.

Мне пришлось выполнить некоторые аварийные проверки: IP-адрес, файлы cookie, и я действительно не помню, что еще.

В конце дня мы решили снять опросы. Этим проклятым роботам просто все равно. IP-адреса были подделаны, файлы cookie удалены и т.д.

Если вам действительно нужны опросы, чтобы быть неуязвимыми, я не вижу другого способа, требующего регистрации и использования captchas, чтобы избежать регистрации ботов для новых учетных записей.

И грустно то, что это был просто развлекательный сайт с опросами о том, какой ваш любимый цвет и тому подобное.

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

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

Ответ 2

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

Использование файла cookie кажется лучшим вариантом, но это зависит от целевой аудитории вашего сайта. Будут ли они технически подкованными, чтобы попытаться взломать систему, чтобы позволить им голосовать несколько раз? Если нет, риск должен быть довольно низким, и это может показаться наилучшим подходом.

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

Я подумал о другом варианте, но я не уверен, возможно ли это или возможно. Если вы могли бы объединить подход IP-адреса с проверкой на основе аппаратного обеспечения (например, MAC-адрес NIC), это устранило бы подход IP-адреса, слишком строгий из-за NAT в локальной сети. Но это не поможет ситуации, когда у вас есть компьютер в интернет-кафе, используемом разными людьми.

Вы также должны использовать captcha (для незарегистрированных учетных записей), чтобы уменьшить вероятность голосования ботов. Если кто-то хочет злобно наложить несколько голосов, что затрудняет им автоматизацию процесса голосования с помощью ботов, мы сможем надеяться уменьшить возникновение такого поведения.

Ответ 3

Итак, вы хотите, чтобы каждый уникальный человек имел только один голос по каждому элементу. Когда человек пытается проголосовать, кто уже проголосовал раньше, вы хотите это обнаружить. Это означает, что вы должны идентифицировать человека. Нет никаких трюков, чтобы обойти это.

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

Как идентифицировать человека? Вы не можете. Вы можете только заставить их идентифицировать себя, предоставляя уникальные учетные данные, например номер социального страхования (я думаю, что это часто используется в Корее), номер паспорта или аналогичный. Это, конечно, не помогает, если вы не проверяете это, так как каждый может составлять 10-значное число с небольшим шансом столкновения.

Даже наличие регистра пользователя действительно не помогает само по себе - они могут просто зарегистрировать другую учетную запись.

Ответ 4

Интересно, можно ли сделать это многоступенчатым процессом, чтобы сделать более трудным для BOTs.

Регистрация или какая-то аналогичная задача доставит вам Cookie-A, а затем, когда вы проголосуете, вы получите Cookie-B, но если у вас есть Cookie-B и нет подходящего совпадающего Cookie-A, ваш голос не будет сосчитать. Если вы попытаетесь перерегистрироваться на том же компьютере, который может быть обнаружен у вас уже есть Cookie-A. Слишком быстрое выполнение шагов рассматривается как BOT.

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

Поэтому любой, кто пытается перейти прямо к кнопке Vote, не будет работать. Им нужно будет сделать Step-A, затем Step-b, а затем Step-C в порядке.

Чтобы переголосовать, мне пришлось бы очистить файлы cookie, перерегистрировать, прочитать страницу blurb (независимо) и, наконец, переголосовать, все в правильном порядке и не слишком быстро.

Требование включения JavaScript может помочь, также как и система Captcha. Captcha может иметь какую-то задержку: "Пожалуйста, смотрите, как появляются два слова", так что есть два слова, показанные один за другим, но "настоящие слова", чтобы их можно было легко запомнить, а затем ввести. Любой ответ, который "слишком быстро" недействительно.

В какой-то момент люди просто будут раздражаться и не беспокоятся, хотя.

Ответ 5

Очевидно, вам нужно идентифицировать пользователя, чтобы он мог голосовать только один раз. Но определить, что пользователь не означает, что вам нужно открыть экран входа в систему. Как уже было сказано выше, вы можете запросить электронную почту адрес, ans используют его как идентификатор.

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

Джефф Этвуд написал статью о "барьере входа" , которая может дать вам подсказки.

Ответ 6

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

Это не сработало. Люди создали сотни ложных адресов электронной почты на различных бесплатных сайтах.

То, что работало в голосовании на сток, несколько удивительно, добавляло пары адресов электронной почты/голоса в базу данных, но не сразу отправляло электронные письма с подтверждением. Вместо этого у меня было задание cron, которое отправляло их каждые 15 минут или около того. Это добавляет дополнительное усложнение для людей, регистрирующих многие адреса, поскольку они должны либо оставить их открытыми, либо запомнить информацию для входа для каждого из них в какой-то момент в будущем.

Конечно, все равно легко обойти кого-то достаточно мотивированного, но в этом случае он, похоже, хорошо работает.

Ответ 7

Я никогда не использовал такую ​​систему, но попытаюсь идентифицировать пользователя по их отпечаткам от браузера. Этот плагин jQuery сочетает в себе размер экрана, глубину цвета, часовой пояс пользователя и установленные плагины для создания уникального идентификатора пользователя. Определенно не безупречный, но это другой подход.

Ответ 8

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

Ответ 9

Я думаю, что вы должны зарегистрировать пользователя до того, как он будет голосовать вверх/вниз. Вы можете получить небольшую часть информации от пользователя, чтобы зарегистрироваться, чтобы он не скучал или не нарушал его регистрацию. Впоследствии он может обновить свою учетную запись, если захочет. ИМХО это лучшее решение.

Ответ 10

Как уже было сказано, "идеального" решения нет.

Как попытка несовершенного решения, как насчет сохранения хэша IP-адреса и агента пользователя.

Это означало бы, что все еще могут голосовать разные пользователи из данного IP-адреса, которые имеют разные пользовательские агенты браузера.

Ответ 11

Используйте подход на основе файлов cookie, он достаточно точен для большинства опросов общественного мнения в Интернете. Держитесь подальше от ограничений IP. Это означало бы, что только один человек из более крупных компаний получает право голоса и что только один человек в семье получает право голоса.

Ответ 12

Также возможно:

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

Но таким образом у пользователя также есть некоторые накладные расходы.

Или сделать это в сочетании с зарегистрированными пользователями (которые не будут вынуждены подтвердить)

Ответ 13

Я знаю, что это старый поток. В любом случае я предлагаю использовать evercookie (http://samy.pl/evercookie/), чтобы отслеживать пользователя, который уже голосовал!

Ответ 14

Это вопрос количества идентификаторов, которыми может управлять один человек. Чем сложнее сделать один человек для управления несколькими идентификаторами, тем более безопасным будет ваш опрос.

Для опросов общественного класса, где результаты не имеют значения, достаточно одного подхода к cookie. Очень легко обойти, если пользователь открывает окна icognito.

Лучшая защита может быть получена, если вы установите барьер регистрации, вы можете использовать логины на основе OAuth для полной аутентификации, потребовалось бы несколько усилий для переключения учетных записей на большее количество голосов. Но это не мешает отчаявшимся голосовать несколько раз.

Еще лучше, если вы отправляете код подтверждения в SMS. Хотя люди могут владеть несколькими телефонными номерами, нередко приходится иметь значительное количество телефонных номеров для совершения мошенничества. Но этот подход стоит денег для вас и может быть злоупотреблен DoSing сервером, чтобы исчерпать все SMS-сообщения.

Если вы хотите опросов общественного мнения, где голоса могут принять решение о выборах. Затем вам нужно, чтобы избиратели появлялись в регистрационном офисе для подачи заявки на опрос и позволяли им выбирать один из подготовленных ПИН-конвертов, который содержит длинный хэш, который они могут ввести при голосовании. Поэтому, если организаторы совершают мошенничество, то избиратели не могут. Это также обеспечивает анонимность.

Ответ 15

Вы уже назвали все пригодные для использования решения.;) Теперь ваша задача решить.

Я бы рекомендовал комбинировать проверку IP-адресов и файлов cookie.