14

在我的社区中,每个用户都应该只有一个帐户。

所以我需要一个解决方案来验证特定帐户是用户拥有的唯一帐户。目前,我使用电子邮件验证。但我真的不需要用户的电子邮件地址。我只是试图防止每个人有多个帐户。

但这当然行不通。无论如何,人们会创建临时电子邮件地址或拥有多个地址。因此,他们使用不同的电子邮件地址进行注册,因此他们获得了多个帐户——这是不允许的。

所以我需要一个比(容易绕过的)电子邮件验证更好的解决方案。顺便说一句,我不想​​使用 OpenID、Facebook Connect 等。

要求:

  • 验证方法必须可供所有用户访问
  • 用户不应该有任何费用(至少 1 美元)
  • 验证必须是安全的(比电子邮件方法更安全)
  • 不应要求用户暴露太多私人细节
  • ...

你有好的方法的想法吗?非常感谢您!

附加信息:

我的社区是一款浏览器游戏,即足球经理游戏。使多个帐户具有吸引力的原因是用户可以交易他们的玩家。因此,如果您有两个帐户,您可以以“真正的”买家不会支付的过高价格购买弱玩家。因此,您的“第一个帐户”获得巨额资金,而“第二个帐户”变得贫穷。但是您不必在意:只需创建另一个帐户即可使第一个帐户更富有。

4

13 回答 13

10

你应该要求比电子邮件更独特的东西。但是没有办法绝对确定一个玩家不拥有两个帐户

IP 解决方案不是解决方案,因为从公司/学校/3G 玩的人将拥有相同的 IP。此外,更改 IP 很容易(重置路由器、代理、使用 3G 与 wifi)

一些网站(工作机会,...)要求您提供官方身份证号码(身份证、护照、社会保障、驾驶执照、签证(没有安全号码,因此人们会感到安全,您不会向他们收费) , ...)

这个解决方案有一些缺点:

  • 未成年人并不总是有身份证/签证
  • 人们不喜欢泄露这种信息。(实际上,取决于您居住的地方:例如在西班牙,询问身份证号码是很常见的)
  • 人们拥有不止一张签证。
  • 可以生成有效的 ID/签证号码。

替代方式:

索要 1 美元的费用

  • 允许交易超过 X 个玩家/花费超过 X 个钱。
  • 付费的人获得了一些优势:更少的广告,更多的玩家,......
  • 支付费用,将限制创建多个帐户。
  • 可以使用已纳税的电话号码支付费用(一些公司提供国际系统)
  • 支付媒介可用作 ID(签证号码)

在新帐户中设置一些限制(如 SO)。

  • 例如:“您必须在交易球员之前至少玩 1 小时”
  • 例如:“您必须至少玩 3 小时才能交易超过 3 名玩家”

使用逻辑检测多个帐户

  • 使用 cookie 检测多个帐户
  • 在交易前检查双方玩家的最后连接时间。(如果玩家 A 在玩家 B 登录前 1 分钟退出:事情正在发生)

我的建议:

混合使用所有这些方法,但保持用户体验流畅,无需“立即填写表格以继续”

于 2011-05-24T08:02:09.893 回答
7

非常有趣的问题!这里的基本问题是多部分 -

  1. 开设帐户很简单(因为创建新的电子邮件 ID 很简单)。
  2. 但是在游戏中开户的效果也不是微不足道的。开一个新账户基本上会给你一定的钱来购买球员。
  3. 将钱转移到另一个帐户是微不足道的(通过交易玩家)。

结合 1 和 2,您会遇到新玩家拥有不公平优势(他们在现实世界中不会拥有)的问题。这可能没问题,因为它会将新用户吸引到您的网站。

然而,在组合中添加 3,您会遇到新玩家很容易将他们的优势转移给老玩家的问题。这允许老用户玩系统,破坏其他人的乐趣。

解决方案可以删除 1、2、3。

  1. 删除 1 - 这是您关注的部分。正如其他人所建议的那样,这是不可能做到 100% 准确的。但是有一些方法会足够好,这取决于你对“足够好”的标准有多严格。我认为最好的折衷办法是向用户询问他们的手机号码。它很有效,允许您以另一种方式联系您的用户。另一种方法是让您的服务“仅限邀请” - 确保有明确定义的邀请“线索”可以唯一识别用户。

  2. 删除 2 - 没有人提出这个建议,这有点令人惊讶。不要仅仅为了注册就给新用户一大笔钱!让他们为之工作,类似于在现实世界中筹集种子资金。你的足球模拟有社交方面吗?只有在用户的“朋友”数量超过一定数量时才给用户钱(增加愿意给他们钱的潜在投资者的数量)如何?

  3. 删除 3 - 其他人已经为此发布了最佳解决方案。采用类似 SO 的策略,新用户必须玩 3 小时才能被允许转移玩家。或者,可以在您的游戏中添加一个“训练”阶段,迫使新玩家在被允许与真实用户一起玩之前通过在模拟环境中赚到足够的钱来证明自己的价值。

或以上任意组合!结合诸如匹配 IP 地址和寻找可疑交易之类的启发式方法,有可能使游戏中的作弊行为完全不可行。

当然,您需要记住的最后一件事是它只是一个游戏。如果有人为了在您的模拟中获得一点优势而费尽心思,那么他们可能应该保留它。只要大家玩得开心!

于 2011-05-24T16:37:35.760 回答
2

我知道这可能出乎你的意料,但是...

我的建议是通过提供一些奖励价值来阻止人们创建另一个帐户,如果他们使用同一帐户的时间更长,这是一种忠诚度计划。出于某种原因,使用新帐户会带来一些好处。让我们消除它们。这里有很多聪明人,所以如果你分享更多关于优势的细节,有人可能会想出一些主意。我完全相信这是关于 SO 的话题。

于 2011-05-23T12:21:09.407 回答
2

我们通过隐藏注册表单来实现这一点。我们的客户只能看到我们使用他们的手机号码作为用户名并通过短信发送密码的登录表单。

后端系统将手机号码与我们的主客户数据库相匹配,从而强制手机号码是唯一的。

于 2011-05-23T17:51:04.587 回答
2

这是一个想法:

  • 将 UUID 存储在客户端的 cookie 中。每个用户登录存储来自 Cookie 的 UUID 与数据库中的帐户实体相关。
  • 对 IP 地址而不是 UUID 执行相同操作。

之后为您的游戏大师编写一个程序界面:

  • 显示不同的帐户名称但相同的 IP(在过去 x 小时内)
  • 显示不同的帐户名称但相同的 UUID(但多久前)
  • 突出显示上述两点的数据集,其中发生了可能被多个帐户滥用的操作(如球员转会)

我认为您不应该通过阻止人们拥有两个或更多帐户来解决该问题。这是不可能的,也是无效的。更容易发现邪恶活动并(自动暂时)禁止这些人。

于 2011-05-24T09:29:36.557 回答
1

用程序是不可能做到这一点的。

您可以做的最接近的是检查IP地址。但它可以改变,并且存在代理。

然后你可以得到计算机的MAC地址,但可以更改网卡。还有一台电脑。

然后,有一种方法可以做到这一点,但你需要面对面地看到人们。递给他们一张带有唯一代码的纸。他们只有在拥有代码的情况下才能订阅。

于 2011-05-11T13:09:30.767 回答
1

最有效的解决方案可能是使用击键生物识别技术。可以通过一个人写句子的方式来识别一个人。

该公司提供可用于实现您的要求的产品:http ://www.psylock.com/en

于 2011-05-11T13:12:30.697 回答
1

我认为每个电子邮件地址 1 个帐户应该足以满足您的需求。毕竟,帐户验证不必在注册后立即结束。

您可以发布发布每条消息的计算机的 IP 地址,以帮助您的用户检测何时有人在同一台计算机上使用多个帐户,并且您可以使用排名系统来阻止人们使用临时帐户。

于 2011-05-23T07:47:58.110 回答
1

您的游戏动态是否允许您要求两个用户都在线才能进行交易?如果是这样,您可以验证参与交易的两个用户的 IP 地址,这将是相同的,除非用户为多个互联网连接付费并从不同的机器访问两个帐户。

于 2011-05-24T03:43:35.347 回答
1

解决您所说的问题的确切情况。

跟踪玩家的预期/公平交易价值,并防止明显的倾斜交易,尤其是。对于新帐户。假设您系统中的绝大多数用户都不是作弊者。

您还可以做一些事情,例如为非交易行为注入资金/积分/自动加班等。

于 2011-05-24T19:51:13.437 回答
0

让他们输入他们的电话号码并向其发送短信。然后,保持所有手机号码的唯一性。大多数人都有一部手机,并且不会为了创建第二个帐户而要求他们的朋友借它。

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

于 2011-05-24T18:03:28.930 回答
0

我会建议一种使用两个举措的方法:

1) 不允许全新账户进行交易。账户必须经过一个等待期,并通过执行一些非交易行为来证明该账户是合法的。

2) 宣传作弊者将被取消资格和处罚的事实。定期搜索用于转储不良玩家的帐户并进行调查。禁止/取消作弊者的资格并公布禁令,以便人们知道规则正在执行。

没有方法是万无一失的,但惩罚的威胁应该尽量减少作弊。

于 2011-05-24T18:49:59.300 回答
0

实际上你可以使用fingerprintjs来跟踪每个用户,使用js在浏览器中加密指纹并在服务器中解密

于 2018-10-09T04:56:46.680 回答