Подтверждение аккаунта: только 1 аккаунт на человека
В моем сообществе у каждого пользователя должна быть только одна учетная запись.
Поэтому мне нужно решение, чтобы убедиться, что конкретная учетная запись принадлежит только пользователю. В настоящее время я использую подтверждение по электронной почте. Но мне не нужны адреса электронной почты пользователей. Я просто пытаюсь предотвратить несколько учетных записей на человека.
Но это не работает, конечно. В любом случае, люди создают временные адреса электронной почты или имеют несколько адресов. Таким образом, они регистрируются с использованием разных адресов электронной почты, и поэтому они получают более одного аккаунта, что запрещено.
Поэтому мне нужно лучшее решение, чем (легко обойти) подтверждение по электронной почте. Кстати, я не хочу использовать OpenID, Facebook Connect и т. Д.
Требования:
- метод проверки должен быть доступен для всех пользователей
- не должно быть никаких затрат для пользователя (не менее 1$)
- проверка должна быть безопасной (безопаснее, чем подход по электронной почте)
- пользователь не должен быть обязан раскрывать слишком много личных данных
- ...
У вас есть идеи для хороших подходов? Заранее большое спасибо!
Дополнительная информация:
Мое сообщество - браузерная игра, а именно игра футбольного менеджера. То, что делает несколько учетных записей привлекательными, заключается в том, что пользователи могут торговать своими игроками. Таким образом, если у вас есть два аккаунта, вы можете купить слабых игроков по чрезмерным ценам, которые не заплатит ни один "реальный" покупатель. Таким образом, ваш "первый счет" получает огромные суммы денег, в то время как "второй счет" становится бедным. Но вам не нужно заботиться: просто создайте другую учетную запись, чтобы сделать первую богаче.
13 ответов
Очень интересный вопрос! Основная проблема здесь состоит из нескольких частей -
- Открытие учетной записи тривиально (поскольку создание новых идентификаторов электронной почты тривиально).
- Но эффект от открытия счета в игре НЕ тривиален. Открытие нового аккаунта в основном дает вам определенную сумму денег, с помощью которой можно покупать игроков.
- Перевод денег на другой счет является тривиальным (для трейдеров).
Объединяя 1 и 2, вы сталкиваетесь с проблемой, что у новых игроков есть несправедливое преимущество (которого у них не было бы в реальном мире). Это, вероятно, нормально, так как привлекает новых пользователей на ваш сайт.
Однако, добавив 3 к миксу, вы столкнулись с проблемой, что новые игроки могут легко передать свое преимущество старым игрокам. Это позволяет старым пользователям играть в систему, разрушая удовольствие для других.
Решение может быть удалено либо 1,2,3.
Удалить 1 - это та часть, на которой вы сосредоточены. Как полагают другие, это невозможно сделать со 100% точностью. Но есть способы, которые будут достаточно хороши, в зависимости от того, насколько строгим является ваш критерий "достаточно хорошо". Я думаю, что лучший компромисс - спросить у пользователя номера его мобильных телефонов. Это эффективно и позволяет вам связаться с вашими пользователями еще одним способом. Другим способом было бы сделать ваш сервис "только для приглашений" - обеспечить наличие четко определенного "следа" приглашений, который может однозначно идентифицировать пользователей.
Удалить 2 - Никто не предложил это, что немного удивительно. Не давайте новым пользователям кучу денег только за регистрацию! Заставьте их работать на это, похоже на привлечение начального капитала в реальном мире. У вашего футбольного симулятора есть социальные аспекты? Как насчет того, чтобы давать пользователям деньги только после того, как количество их "друзей" превысит определенное число (увеличивая количество потенциальных инвесторов, которые будут давать им деньги)?
Удалить 3 - Кто-то уже опубликовал лучшее решение для этого. Примите стратегию, подобную SO, когда новый пользователь должен играть в течение 3 часов, прежде чем ему разрешат переводить игроков. Или, может быть, добавьте в игру "тренировочную" стадию, которая заставляет нового игрока доказать свою ценность, заработав достаточно денег в смоделированной среде, прежде чем им позволят играть с реальными пользователями.
Или любая комбинация вышеперечисленного! В сочетании с эвристикой, такой как сопоставление IP-адресов и поиск подозрительных транзакций, возможно сделать обман в игре совершенно нежизнеспособным.
Конечно, последнее, что вам нужно иметь в виду, это то, что это просто игра. Если кто-то пойдет на большие неприятности, просто чтобы получить небольшое преимущество в вашей симуляции, он, вероятно, заслуживает того, чтобы его сохранить. Пока все веселятся!
Вы должны попросить что-то более уникальное, чем электронная почта. Но нельзя быть абсолютно уверенным, что у игрока нет двух аккаунтов.
IP-решение не является решением, так как люди, играющие из compagny/school/3G, будут иметь одинаковый IP-адрес. Также легко сменить IP (перезагрузите роутер, прокси, используйте свой 3G против Wi-Fi)
Некоторые веб-сайты (предложения о работе,...) запрашивают у вас официальный идентификационный номер (удостоверение личности, паспорт, социальное обеспечение, водительские права, визу (без защитного номера, так что люди будут чувствовать себя в безопасности, что вы не будете взимать с них плату)...)
Это решение имеет несколько недостатков:
- несовершеннолетний не всегда имеет удостоверение личности / визу
- pepole не любит выдавать такую информацию. (на самом деле, в зависимости от того, где вы живете: например, в Испании очень часто спрашивают идентификационный номер)
- люди владеют более чем одной визой.
- возможно генерировать действительный идентификационный номер / номер визы.
Альтернативный способ:
просить за плату 1$
- чтобы иметь возможность торговать более X игроков / тратить больше X денег.
- люди, которые платят комиссию, получили некоторое преимущество: меньше рекламы, дополнительные игроки,...
- Оплата комиссии будет ограничивать создание нескольких учетных записей.
- Плата может быть оплачена с помощью облагаемого налогом номера телефона (некоторые компании предоставляют международную систему)
- Средство оплаты может быть использовано в качестве идентификатора (номер визы)
поставить некоторые ограничения в новой учетной записи (например, SO).
- Например: "Вы должны сыграть как минимум за 1 час до торговли игроком"
- Например: "Вы должны играть не менее 3 часов, прежде чем торговать более 3 игроков"
Используйте логику для обнаружения нескольких аккаунтов
- использовать cookie для обнаружения нескольких учетных записей
- Проверьте время последнего соединения обоих игроков перед транзакцией. (если игрок A выходит из системы за 1 минуту до входа игрока B: что-то происходит)
Моя рекомендация:
Используйте сочетание всех этих методов, но сохраняйте плавность пользовательского опыта без "формы, чтобы заполнить сейчас, чтобы продолжить"
Вот идея:
- Храните UUID в куки у клиентов. Каждый логин пользователя сохраняет UUID из Cookie относительно сущности учетной записи в базе данных.
- Сделайте то же самое с IP-адресами вместо UUID.
После этого напишите программный интерфейс для ваших мастеров игры, который:
- Показать разные имена аккаунтов, но тот же IP (в течение последних х часов)
- Показать разные имена аккаунтов, но тот же UUID (тем не менее, как давно)
- Выделите наборы данных из двух вышеприведенных пунктов, где происходили действия (например, переводы игроков), которыми можно злоупотреблять, используя несколько учетных записей.
Я не думаю, что вы должны решить эту проблему, запретив людям иметь два или более аккаунтов. Это невозможно и неэффективно. Облегчите обнаружение этой злой деятельности и (автоматически временно) запретите этих людей.
Мы реализовали это, скрыв регистрационную форму. Наши клиенты видят только форму входа в систему, где мы используем их номер мобильного телефона в качестве имени пользователя и отправляем пароль с помощью текстового сообщения.
Бэкэнд-системы сопоставляют номер мобильного телефона с нашей основной базой данных клиентов, что обеспечивает уникальность номера мобильного телефона.
Я знаю, что вы, вероятно, ничего не ожидали, но...
Мое предложение было бы отговорить людей от создания другой учетной записи, предлагая некоторые бонусные значения, если они используют одну и ту же учетную запись в течение более длительного периода, что-то вроде программы лояльности. Почему-то использование новой учетной записи дает некоторые преимущества. Давайте устраним их. Здесь много умных людей, поэтому, если вы поделитесь более подробной информацией о преимуществах, кто-то может придумать какую-то идею. Я полностью убежден, что это по теме на SO, хотя.
Наиболее эффективным решением может быть использование биометрии нажатия клавиш. Человек может быть идентифицирован по тому, как человек пишет предложение.
Эта компания предоставляет продукт, который можно использовать для реализации ваших требований: http://www.psylock.com/en
Это невозможно сделать с помощью программы.
Самое близкое, что вы можете сделать, это проверить IP-адрес. Но это может измениться, и прокси существуют.
Тогда вы можете получить MAC-адрес компьютера, но сетевую карту можно изменить. И компьютер тоже.
Тогда есть один способ сделать это, но вам нужно видеть людей лицом к лицу. Вручите им лист бумаги с уникальным кодом. Они могут подписаться только при наличии кода.
Я думаю, что 1 учетная запись на адрес электронной почты должна быть достаточно хорошей для ваших нужд. В конце концов, проверка аккаунта не должна заканчиваться сразу после регистрации.
Вы можете опубликовать IP-адрес компьютера, с которого было отправлено каждое сообщение, чтобы помочь вашим пользователям определить, когда кто-то использует несколько учетных записей с одного компьютера, и вы можете использовать систему ранжирования, чтобы отговорить людей использовать временные учетные записи.
Адрес точный сценарий, который вы говорите, является проблемой.
Отслеживайте ожидаемую / справедливую стоимость торговли игроков и предотвращайте откровенно односторонние сделки, особенно для новых аккаунтов. Предположим, что подавляющее большинство пользователей в вашей системе не мошенники.
Вы также можете делать такие вещи, как накапливать средства / баллы за неторговые действия / автоматически сверхурочно и т. Д.
Позволяет ли динамика вашей игры требовать, чтобы оба пользователя были в сети для совершения сделки? Если это так, вы можете проверить IP-адреса обоих пользователей, участвующих в сделке, которые были бы одинаковыми, если бы пользователь не платил за несколько подключений к Интернету и доступ к двум учетным записям с разных компьютеров.
На самом деле вы можете использовать fingerprintjs для отслеживания каждого пользователя, использовать JS для шифрования отпечатка пальца в браузере и дешифрования на сервере
Попросите их ввести свой номер телефона и отправить ему текстовое сообщение. Затем сохраните уникальный номер телефона. У большинства людей есть один сотовый телефон, и они не собираются просить своего друга одолжить его только для того, чтобы создать второй аккаунт.
Я бы предложил подход с использованием двух инициатив:
1) Не позволяйте новым счетам совершать сделки. Счета должны пройти период ожидания и доказать, что учетная запись является законной, выполнив некоторые неторговые действия.
2) Публикация того факта, что мошенники будут дисквалифицированы и наказаны. Периодически выполнять поиск учетных записей, используемых для сброса плохих игроков и расследования. Запретить / дисквалифицировать мошенников и опубликовать запреты, чтобы люди знали, что правила применяются.
Ни один метод не будет надежным, но угроза наказания должна сводить к минимуму мошенничество.