【问题标题】:how to prevent users from create multiple accounts on free-daily limited service如何防止用户在免费每日有限服务上创建多个帐户
【发布时间】:2013-09-17 00:55:38
【问题描述】:

我们的想法是我们有一个免费下载的网站

但是每个用户的每日下载量会有每日限制(比如每个用户每天 5 dl) 所以会有多个帐户的用户。

  1. IP检测不好;因为我有很多来自一个 ip 的用户(来自一个组织的用户)
  2. 电子邮件验证和唯一电子邮件帐户不好;您可以创建多个帐户
  3. 短信确认不好;用户可以使用他/她的朋友手机号码注册另一个帐户

我看到一个网站解决了这个问题(部分)www.gameknot.com

他们通过计算机名称或 MAC 地址或其他我不确定的东西来检测用户, 我在那里注册了 3 个用户,他们检测到我,说:“这三个用户在使用同一台计算机”!并禁止所有三个帐户。

当我重新安装另一个 Windows 时,问题解决了,我有一个用户在那里。

所以我问自己,“他们是怎么做到的”?

关于如何处理这个问题有什么建议吗?

【问题讨论】:

标签: accounts


【解决方案1】:

如果我要实现这样一个系统,每个用户只有一个登录或类似的东西,我会做这样的事情:

1:创建机器的ID,基于IP,可能使用JavaScript/Java Applet/Flash 可以获得MAC 或者我不知道在考虑什么。为简单起见,假设我这样计算主机 ID:

ID = MD5(PUBLIC_IP) + MD5(LOCAL_IP) + MD5(MAC)

2:用户 1 登录并假设我计算出的主机 ID = 666。我们在数据库中查找一个表,假设 table_hosts 包含此数据(用户,主机 ID)

3:用户 1 使用了所有 5 次下载(使用会话或数据库中的记录跟踪它们)

4:User1 尝试以 User2 登录,现在我们计算 ID = 666,相同的 ID = 666,我们查找 table_hosts 并发现 User1 当天也使用了相同的主机 ID。现在我们可以禁止具有该 ID 的帐户,发出警告,例如 20% 直到禁止等

希望我能提供帮助,但请记住要有创意,这才是最重要的!

LE:因为其他人讨论了共享机器,所以 ID 可以这样计算:

ID = MD5(PUBLIC_IP) + MD5(LOCAL_IP) + MD5(MAC) + MD5(NameOfLoggedOnUser)

但这也有它的缺点,施虐者可能会在其机器上创建 2 个或更多帐户。无论如何,我再说一遍要有创意,是的,我们不应该忘记任何锁都可以被撬开。

【讨论】:

  • 谢谢,看起来很棒!那么,PUBLIC_IP 和 LOCAL_IP 之间有什么区别?我在谷歌上搜索,找不到任何检测用户 MAC 的代码,你知道代码吗?
  • 对于 PUBLIC_IP,我的意思是当您继续使用时看到的 IP whatismyip.com 对于 LOCAL_IP,属于路由器后面的机器的 IP,例如 192.168.x.x、10.0.x.x 等。在 Windows 上,您可以看到本地ip是什么使用: ipconfig in cmd 关于获取MAC,假设你会用Java Applet做守卫工作,看看这个Java代码kodejava.org/examples/250.html它可能对你有帮助。
【解决方案2】:

如果是 MAC 地址,重新安装 Windows 不会改变任何事情 - 这是一个硬件地址。

也许他们在您的机器上设置了一个 cookie?这样做的缺点是,清除 cookie 的用户将获得开放访问权限。

即使将它绑定到一台机器上也有缺点 - 如果它是一台共享机器(在家里甚至是网吧)。

可能没有理想的解决方案,因为您会遇到这样的情况:某人合法地做一些看起来很狡猾的事情,而狡猾的人可能看起来很合法。

【讨论】:

  • 亲爱的 mopoke,cookie 的事情没有解决,因为用户可以删除它们。还是谢谢
【解决方案3】:

这里的主要问题是在控制和烦恼之间找到平衡。 对您的更多控制是否会导致您的用户更加烦恼?

请记住,用户下载失败的原因有很多。您是否允许在不惩罚用户的情况下恢复下载或重新启动下载?

您提到电子邮件验证和唯一电子邮件帐户不好。但是不要忘记,仅仅为此目的创建一个新的电子邮件帐户对大多数用户来说是一件麻烦事。即使使用现有电子邮件注册新帐户也是如此。所以是的,有些用户会得到比他们应该得到的多一点,但这会对业务产生严重的负面影响吗?

如果您希望他们为额外的下载付费,将有两种类型。那些珍惜时间和讨厌麻烦的人。让他们轻松一点,他们会很乐意付钱的!这些是您想要关心的客户。

另一类人会发明新花样而不付钱,不管你有多努力。你会检测到他们的电脑吗?然后他们会和许多其他电脑一起去网上商店,所以你一无所获。您对这些用户无能为力。但值得担心吗?

因此,总而言之,也许让乐于付款的用户更轻松地使用它比担心那些无论如何都不会付款的用户更值得。这是一些关于用户友好的more discussion

编辑。

刚刚注意到answer,表明获取虚假电子邮件比我想象的还要容易。但是,有多少用户会知道这项服务呢?

【讨论】:

  • +1 在这个问题问了将近 4 年后,我完全同意你的观点。
【解决方案4】:

他们可能使用 cookie 或 IP 进行跟踪,两者都很容易被击败。与所有安全问题一样,这是可用性与安全性的问题。

如果真的,真的很重要,您可能需要使用短信验证。它可能会尽可能安全......但这是一件非常重要的事情要解决,尤其是对于来自非用户的用户。我只会使用 IP 日志记录(因此您可以定期进行搜索以查看任何奇怪的模式)和 cookie。

【讨论】:

  • 亲爱的 jonatan,正如我提到的,我有 50 个用户和一个 IP,那又如何?忘记IP的事情。
  • 是的。它并不意味着是一个基于 IP 的适当安全系统,只是一种检查机器人和其他东西的方法。如果您怀疑机器人活动,IP 日志可能会派上用场,以决定您是否要禁止它。
【解决方案5】:

好吧,StackOverflow 似乎使用Open ID 来解决这个问题,如果不是消除它的话。

【讨论】:

  • 开放 ID 防止两个人使用相同的 ID。它并不意味着也不会以任何方式帮助防止人们创建多个 ID。 Open ID 解决了一个不同的、不相关的问题,即防止“身份窃取”,并允许“无密码”的身份识别。一些 Open ID 提供商可能会验证您,但我认为这不是必需的。
【解决方案6】:

我经营一个免费网站,人们可以在其中注册帐户,我遇到了一些与您类似的问题。我要求进行电子邮件验证并且我已经记录了 IP,但人们总是会找到一种方法来玩弄这个系统。唯一的解决方案是经常监控您的站点,以确保没有发生异常情况。我有一个案例,三个经过验证的帐户在几分钟后从同一个 IP 登录,并且都执行完全相同的操作。我写信给一位抱怨“哦不,只是我,我不知道你在说什么”的用户。我最终暂停了该用户的帐户,并且所有三个帐户同时变为非活动状态。

我还遇到过另一个案例,有人创建了虚假的电子邮件帐户,但每次都使用相同的密码和类似的电子邮件地址以几乎相同的方式进行操作。他在网站上造成了问题,所以我禁止了他的所有帐户,他最终停止了。

只需监控并寻找模式。除了变得非常棘手之外,您几乎可以做的就是这些。

祝你好运!

【讨论】:

  • 好的 idia ,相同的密码,.... 这很好,但需要付出很多努力,尤其是当用户数量是 1'000'000 这样的巨大数字时!!!
猜你喜欢
  • 1970-01-01
  • 2011-05-30
  • 2019-03-06
  • 2010-09-15
  • 2022-11-16
  • 2012-11-18
  • 2013-06-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多