Подтверждение аккаунта: только 1 аккаунт на человека - PullRequest
12 голосов
/ 11 мая 2011

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

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

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

Так что мне нужно лучшее решение, чем (легко обойти) подтверждение по электронной почте. Кстати, я не хочу использовать OpenID, Facebook Connect и т. Д.

Требования:

  • метод проверки должен быть доступен для всех пользователей
  • для пользователя не должно быть никаких затрат (не менее 1 $)
  • проверка должна быть безопасной (более безопасной, чем отправка по электронной почте)
  • пользователь не должен предъявлять слишком много личных данных
  • ...

У вас есть идеи для хороших подходов? Заранее большое спасибо!

Дополнительная информация:

Мое сообщество - браузерная игра, а именно игра футбольного менеджера. То, что делает несколько учетных записей привлекательными, заключается в том, что пользователи могут торговать своими игроками. Таким образом, если у вас есть два аккаунта, вы можете купить слабых игроков по чрезмерным ценам, которые не заплатит ни один «реальный» покупатель. Таким образом, ваш «первый счет» получает огромные деньги, а «второй счет» становится бедным. Но вам не нужно заботиться: просто создайте другую учетную запись, чтобы сделать первую еще богаче.

Ответы [ 13 ]

10 голосов
/ 24 мая 2011

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

IP-решение не является решением , поскольку люди играют из компании/ school / 3G будет иметь тот же IP.Также легко сменить IP (сброс роутера, прокси, используйте свой 3G против Wi-Fi)

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

У этого решения есть несколько недостатков:

  • несовершеннолетний не всегда имеет удостоверение личности / визу
  • люди не любят выдавать такую ​​информацию.(на самом деле, в зависимости от того, где вы живете: например, в Испании очень часто спрашивают идентификационный номер)
  • люди имеют более одной визы.
  • можно сгенерировать действительный ID / номер визы.

Альтернативный способ:

попросить плату в размере 1 $

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

накладывать некоторые ограничения на новый аккаунт (например, SO).

  • например: "Вы должны играть не менее 1 часаперед торговлей игрока "
  • например:" вы должны играть не менее 3 часов, прежде чем торговать более чем 3 игроками "

Использовать логику для обнаружения нескольких счетов

  • использовать cookie для обнаружения нескольких учетных записей
  • проверять время последнего подключения обоих игроков перед транзакцией.(если игрок A выходит из системы за 1 минуту до входа в систему игрока B: что-то происходит)

Моя рекомендация:

Используйте сочетание всех этих методов, но сохраняйте пользовательский опыт плавным без"Заполните форму, чтобы продолжить"

7 голосов
/ 24 мая 2011

Очень интересный вопрос!Основная проблема здесь состоит из нескольких частей -

  1. Открытие учетной записи тривиально (поскольку создание новых идентификаторов электронной почты тривиально).
  2. Но эффект открытия учетной записи в игреНЕ тривиально.Открытие нового счета в основном дает вам определенную сумму денег, с помощью которой можно покупать игроков.
  3. Перевод денег на другой счет тривиален (для трейдеров).

Объединение 1 и 2у вас проблема в том, что у новых игроков есть несправедливое преимущество (которого у них не было бы в реальном мире).Это, вероятно, нормально, так как привлекает новых пользователей на ваш сайт.

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

Решение может быть удалено либо 1,2,3.

  1. Удалить 1 - Эточасть, на которой вы сосредоточены.Как полагают другие, это невозможно сделать со 100% точностью.Но есть способы, которые будут достаточно хороши, в зависимости от того, насколько строгим является ваш критерий «достаточно хорош».Я думаю, что лучший компромисс - спросить у пользователя номера его мобильных телефонов.Это эффективно и позволяет вам связаться с вашими пользователями еще одним способом.Другим способом было бы сделать ваш сервис "только для приглашений", гарантируя, что существует четко определенный "список" приглашений, который может однозначно идентифицировать пользователей.

  2. Удалить 2 - никто не предложилэто немного удивительно.Не давайте новым пользователям кучу денег только за регистрацию!Заставьте их работать на это, похоже на привлечение начального капитала в реальном мире.У вашего футбольного симулятора есть социальные аспекты?Как насчет того, чтобы давать пользователям деньги только после того, как количество их «друзей» превысит определенное число (увеличивая количество потенциальных инвесторов, которые будут давать им деньги)?

  3. Удалить 3 - У кого-то еще естьуже выложили лучшее решение для этого.Примите стратегию, подобную SO, когда новый пользователь должен играть в течение 3 часов, прежде чем ему разрешат переводить игроков.Или, может быть, добавьте в свою игру стадию «обучения», которая заставит нового игрока доказать свою ценность, заработав достаточно денег в имитируемой среде, прежде чем им позволят играть с реальными пользователями.

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

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

2 голосов
/ 24 мая 2011

Вот идея:

  • Храните UUID в cookie на клиентах. Каждый логин пользователя сохраняет UUID из Cookie относительно сущности учетной записи в базе данных.
  • Сделайте то же самое с IP-адресами вместо UUID.

После этого напишите программный интерфейс для ваших мастеров игры, который:

  • Показать разные имена учетных записей, но тот же IP (за последние x часов)
  • Показать разные имена учетных записей, но тот же UUID (тем не менее, как давно)
  • Выделите наборы данных из двух точек выше, где происходили действия (например, переводы игроков), которыми можно злоупотреблять, используя несколько учетных записей

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

2 голосов
/ 23 мая 2011

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

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

2 голосов
/ 23 мая 2011

Я знаю, что вы, вероятно, ничего не ожидали, но ...

Мое предложение было бы отговорить людей от создания другой учетной записи, предлагая некоторые бонусные значения, если они используют одну и ту же учетную запись в течение более длительного периода, своего рода программа лояльности. Почему-то использование новой учетной записи дает некоторые преимущества. Давайте уничтожим их. Здесь много умных людей, поэтому, если вы поделитесь более подробной информацией о преимуществах, кто-то может предложить какую-то идею. Я полностью убежден, что это по теме на SO, хотя.

1 голос
/ 24 мая 2011

Адрес точного сценария, о котором вы говорите, является проблемой.

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

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

1 голос
/ 24 мая 2011

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

1 голос
/ 23 мая 2011

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

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

1 голос
/ 11 мая 2011

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

Эта компания предоставляет продукт, который можно использовать для реализации ваших требований: http://www.psylock.com/en

1 голос
/ 11 мая 2011

Невозможно сделать это с помощью программы.

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

Тогда вы можете получить MAC-адрес компьютера, но сетевую карту можно изменить.И компьютер тоже.

Тогда есть один способ сделать это, но вам нужно видеть людей лицом к лицу.Вручите им лист бумаги с уникальным кодом.Они могут подписаться, только если у них есть код.

...