Проверка учетной записи: только 1 учетная запись на человека

#verification #user-accounts #account-management

#проверка #учетные записи пользователей #управление учетными записями

Вопрос:

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

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

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

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

Требования:

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

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

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

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

Комментарии:

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

2. Спасибо за этот комментарий 🙂 Язык, который я бы выбрал, — PHP. Я знаю, что это не совсем возможно, но то, чего я хочу, — это лучшее решение в пределах своих возможностей, конечно. Итак, я ищу подход, который сделает все это более сложным, а не невозможным.

Ответ №1:

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

Решение с IP-адресом не является решением, поскольку люди, играющие из компании / школы / 3G, будут иметь один и тот же IP-адрес. Кроме того, изменить IP легко (перезагрузите маршрутизатор, прокси, используйте 3G вместо wifi)

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

Это решение получило несколько недостатков:

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

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

запрашивайте плату в размере 1 $

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

установите некоторые ограничения в новой учетной записи (вот ТАК).

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

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

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

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

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

Комментарии:

1. Большое тебе спасибо, Лода 🙂 Ваш ответ был действительно, действительно хорош. Вот почему у вас 8 голосов «за» (на данный момент) — включая мой голос 🙂 К сожалению, выбранный мной ответ помогает мне еще больше. Но я думаю, что эти положительные голоса показывают, что мы все ценим ваш ответ. К сожалению, я могу выбрать только одну…

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

Ответ №2:

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

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

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

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

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

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

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

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

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

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

Комментарии:

1. Большое вам спасибо, мне действительно нравится ваш подробный ответ 🙂 Это идеально соответствует моим потребностям!

Ответ №3:

Я знаю, что это, вероятно, совсем не то, чего вы ожидали, но…

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

Комментарии:

1. Они могут «использовать одну и ту же учетную запись в течение более длительного периода» и, тем не менее, зарегистрировать вторую учетную запись. Итак, «вторая учетная запись» предназначена для улучшения позиции первой учетной записи в рейтинге. Я добавил некоторые подробности о преимуществах новых учетных записей. Может быть, кто-нибудь (вы?) сможет мне помочь 🙂 Спасибо за пока!

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

3. Спасибо за этот совет. Вероятно, стоит отговаривать людей от создания другой учетной записи. Но самое сложное — устранить эти преимущества.

Ответ №4:

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

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

Комментарии:

1. номер мобильного телефона звучит разумно, Google App Engine тоже это делает, однако это очень личная деталь, которую не все хотят раскрывать.

2. Вы правы, именно поэтому мы находимся в процессе настройки opp в качестве службы федерации безопасности, такой как служба федерации Ping и Microsoft ACS.

3. Я не уверен, правильно ли я понял: у вас нет регистрационной формы, а только форма входа, верно? Данные из формы входа сверяются с основной базой данных. Если запись (номер мобильного телефона) уже есть, пользователь только что вошел в систему. В противном случае он / она сначала регистрируется автоматически. Правильно?

4. Правильно. Мы также привязали наше приложение ко всем национальным операторам связи, так что для всех новых пользователей регистрационная форма предварительно заполняется информацией, которую клиент предоставил своему оператору связи.

Ответ №5:

Вот идея:

  • Сохраняйте UUID в файле cookie у клиентов. При каждом входе пользователя в систему UUID из cookie сохраняется в отношении объекта учетной записи в базе данных.
  • Сделайте то же самое с IP-адресами вместо UUID.

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

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

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

Комментарии:

1. Этот ручной подход, вероятно, отнимает много времени и не настолько эффективен, не так ли? Это не решает проблему.

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

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

Ответ №6:

Это невозможно выполнить с помощью программы.

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

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

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

Комментарии:

1. Конечно, я хочу достичь наилучшего результата в пределах возможного, не более. То, что программа не может решить эту проблему на 100% правильно, должно быть очевидно для всех.

Ответ №7:

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

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

Комментарии:

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

2. Правильно. Этот метод предназначен для подтверждения того, кто вы есть, а не для доказательства того, кем вы не являетесь. Тем не менее, очень интригующе.

3. @Marco: это сработает. Если вы знаете, кто это, вы также знаете, кем это не является.

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

Ответ №8:

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

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

Комментарии:

1. Да, это действительно хороший подход — в целом. Но как вы хотите отговорить пользователей от использования «второстепенных учетных записей», если эти «второстепенные учетные записи» помогают «первой учетной записи» подняться по рейтинговой лестнице?

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

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

Ответ №9:

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

Комментарии:

1. Спасибо за этот ответ, njbair. Как уже указывали некоторые пользователи, IP-адрес не является надежным доказательством. Можно использовать прокси, перезагрузить маршрутизатор, использовать мобильный интернет (3G и т.д.) и так далее.

Ответ №10:

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

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

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

Комментарии:

1. Но если пользователи не могут обменять вещи на (намного) большую сумму, чем ожидаемая, игра становится скучной, не так ли?

2. Ограничение в размере от 50% до 200% от ожидаемой стоимости и т.д., Тем не менее, может быть разумным. Вы также можете сделать это со временем. Новые учетные записи могут не совершать односторонних сделок. Старые учетные записи могут. Это может быть даже полезно для предотвращения того, чтобы новички не были съедены заживо ветеранами.

Ответ №11:

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

http://en.wikipedia.org/wiki/List_of_SMS_gateways

Комментарии:

1. Это, вероятно, сработало бы, но многие пользователи не хотят «публиковать» или раскрывать свои мобильные номера.

2. Заверение их в том, что номер никогда не будет записан или опубликован, может облегчить это (вы могли бы использовать sha1 для их номера, чтобы не сохранять его копию и при этом предотвращать дубликаты).

Ответ №12:

Я бы предложил подход, использующий две инициативы:

1) Не разрешайте новым аккаунтам совершать сделки. Учетные записи должны пройти период ожидания и подтвердить, что учетная запись является законной, выполнив некоторые неторговые действия.

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

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

Комментарии:

1. Спасибо, мне особенно нравится первый подход 🙂 Период ожидания для новых пользователей полезен. Еще лучше, если этим новым пользователям не придется просто «ждать», пока истечет время, а придется выполнять действия, чтобы получить «правильную торговлю». Очень хорошо!

Ответ №13:

на самом деле вы можете использовать fingerprintjs для отслеживания каждого пользователя, использовать js для шифрования отпечатка пальца в браузере и расшифровки на сервере