防止用户启动多个账户?

36

我知道最终是做不到的。

但是,对于类似博客的网络服务,有哪些选项可以:

  a) 限制人们创建多个帐户的选项,
  b) 增加检测多个帐户/人的机会?

(人们可以注册自己的博客)

更新:
我认为“限制选项”已经得到了很好的回答。(没有可靠的方法,但我们可以提高门槛)
然而,我仍然想知道检测多个帐户的其他选项是什么?

10个回答

40

我假设你说的是一个免费服务?我无法想象有任何方法既不会有严重缺陷,又很容易被击败。比如设置cookie,要求唯一的电子邮件地址都很容易被打破。

要求唯一的IP地址并不是绝对可靠的,但在某种程度上可能有效,直到你有很多用户,并收到代理后面的人的投诉。

最好的方法是收费或要求人们提供某些个人信息,例如真实姓名/电话/地址,您可以验证,或者信用卡号,但这是侵入式的(再次,也许您只想要愿意提供此类信息的认真用户)。

我想我会反问这个问题,并问“为什么不让人们拥有多个帐户?”

可能还有其他减轻您底层原因的方式,例如如果您担心有大量孤立的博客,则可以扫描一段时间的不活动状态并将其禁用或至少安排人员查看它们。如果您担心垃圾邮件博客,则可以定期扫描所有博客内容以查找垃圾邮件。如果您担心机器人并使用一些通用软件(如WordPress),请更改表单变量的名称,并保护您的表单免受机器人攻击。

一定要考虑其他处理问题的方式,因为如果它是像Blogger这样的典型免费服务,那么您将无法阻止人们注册多个帐户。

至于检测一个人拥有多个账户,您首先需要做的是让日志文件存储每个用户登录的完整数据(用户名、时间戳、IP地址、用户代理等),以便稍后进行分析。以下列举了一些需要注意的事项,但仅通过查看日志文件,您可能会发现其他模式。一些事情可以尝试:

  • 设置跟踪cookie(即随机哈希值)并在登录时记录其值,查找相同cookie值的多个登录
  • 相同IP地址/用户代理组合的登录
  • 仅从同一个IP地址登录(比前两个项目不太可靠)
  • 来自免费网页邮件服务(如Gmail等)的电子邮件地址的帐户
  • 相同密码的账户
  • 如果你担心垃圾博客,可以尝试对博客内容进行分析,比如提取所有的<a href>,并查找博客之间的相关性。你也可以通过像SpamAssassin这样的工具或过滤"viagra"和"rolex"等垃圾信息来过滤博客内容。


    那个列表真的很有帮助,cookie 是一个不错的技巧,我现在就要实现它,谢谢 :) - Gilles
    很酷,我认为这是正确的方式。通过多个账户找到某人并删除他们会更容易,只需说“抱歉,您违反了我们的服务条款并拥有多个账户”(当然不要透露如何知道)而不是在注册时检测它。 - joelhardi
    如果他们尝试注册第二个账户时被封锁,那么他们就会一直寻找绕过封锁的方法。而且,删除他们可能花费了很多时间的活跃账户会对他们造成更大的打击。他们会三思而后再次尝试。 - joelhardi
    1
    嗯...我在我的机器上至少运行了5个不同的浏览器。这会给我提供5个不同的用户代理+ 5个不同的cookie - 是的,IP地址相同,但是我像许多人一样在路由器/NAT后面。 - BerggreenDK
    手机验证并不是我曾经考虑过的事情,但完美地解决了我的问题! - Oliver Cooper
    1
    除非您在哈希过程中未添加唯一的用户盐,否则不应该能够检测到具有相同密码的帐户,这样做是不安全的。 - Yaroslav

    15

    我认为最好的方法是取消创建多个账户的激励措施。

    你是否对用户进行任何限制?这些限制是否可以通过创建多个账户轻松地克服?如果是这样,那么您可能应该考虑取消这些限制。


    7
    好主意。我只要让所有用户无限次投票支持自己的评论就行了。(讽刺)嘿嘿,抱歉,我只是厌倦了那些基本上回答说:“我不会给出真正的答案,因为你提出的问题是错误的,而我比你更聪明。”不过这仍然不是一个坏答案,嘿嘿。 - Arcolye
    好的,没有单一的解决方案。 这是我提出替代方案的方式。 如果你认为它意味着或者我认为它意味着我比你聪明,那我们可能会有更大的问题><。 我理解你的沮丧,但是可能其他人还没有想到替代方案。 - aib
    1
    “无限多次投票”的问题只在投票是递增的情况下才有效。相反,考虑一个建议引擎,我的投票只对计算将向我建议的内容有影响,或者一个社交网站,它们只对我的朋友感兴趣:问题就失去了上下文。 - aib

    11

    在创建账号之前,您可以向用户发送短信进行验证。由于人们无法像获取电子邮件地址那样轻易地获取手机号码,因此这可能会有效果。有些人可能能够获得两三个账户,但不能无限制地获取。有许多服务可让您以编程方式发送短信,包括 Gizmo SMS Text4Free TxtDrop

    当然,这需要用户拥有手机,并愿意向您提供手机号码。


    9
    您可以设置一个跨浏览器的cookie,例如http://samy.pl/evercookie/(Flash Cookie)。它不能被浏览器cookie删除,会一直存在,您可以在不同的浏览器中读取该cookie。如果用户仅使用同一台计算机,则这是终极解决方案。但是,如果用户使用多台计算机,则IP地址是唯一可用的查找方法,不过在某些情况下,可能有两个真实的人使用两台计算机登录到您的网站上。

    2
    ff警告您,Flash正在尝试运行,这看起来是恶意的。 - Ben Muircroft

    3

    要求用户使用信用卡进行注册。您不必向该卡收取任何费用,只需检查该卡是否有效即可。


    有动力的用户可能愿意使用多张信用卡。然而,这种方法仍然似乎不足够。 - antik

    2
    我认为这个问题的另一种解决方案是让“大佬们”来做。将您网站的身份验证转移至知名的第三方,如 Google 或 Facebook。这并不能防止重复账户,但可以让您想象自动实施了最新的反垃圾邮件技术等措施。请参考http://oauth.net/

    2
    您不能也不应该这样做。您不是在处理真实世界中的人,而是在处理账户,因此应将其视为抽象实体,它们有平等的生存权利。
    以下是我能够想到的一些选项:
    - 每个电子邮件地址仅限一个帐户。但我可以创建多个电子邮件地址,或使用Mailinator。 - 长而繁琐的验证程序。但这会阻止用户注册。 - 将IP绑定到帐户并阻止(暂时?)该IP创建另一个帐户。但是,两个不同的用户使用相同的网关将被阻止... - 使用cookies。但用户可以删除它们。

    1
    我喜欢随意生成我的电子邮件地址的随机排列。例如,contant+variable@gmail.com -> constant@gmail.com 的表示法,或者 variable@domain.org -> constant@domain.org 的技巧系列,其中“variable”可以是任何内容。 - Kent Fredric

    2

    我在现实生活中看到的最难破解的方法是使用单独的硬件媒介进行确认(例如通过短信发送确认码用于公共服务,或者通过寄信发送RSA令牌用于更敏感的事情,例如内部网络访问),或者要求提供财务相关的身份证明,例如银行账号(Paypal向您的账户存入几分钱,总金额即为您的密码)或有效的信用卡号码。


    0

    我认为,正如许多人所提到的,验证手机号码是最好的方法之一,这也是我想要在第一时间使用的,如果它不是如此昂贵的话......

    我发现了这个网站here,我认为它可以用于此目的,但我自己还没有测试过,但它似乎非常现代化且价格便宜。


    0

    一个常见的选项是通过电子邮件验证个人身份。实际上,让他们回复发送到其账户的电子邮件。一些网站更进一步,不允许来自雅虎、谷歌、热邮等域名的地址。


    这仍然不能完全防止某人创建多个帐户,但由于大多数人只创建一个活动邮件帐户,因此这可能是您可以接近的最佳方法。 - Noah Goodrich
    对于这样的网站,我使用 http://spam.la 或者 http://fakemailgenerator.com/ ,它们经常更改电子邮件地址的域名。我认为没有办法在不烦扰“好”的用户的情况下防止这种情况发生。 - jk.
    你刚刚排除了使用特定电子邮件客户端的人。 - David Thornley
    现如今垃圾邮件太多,网页邮箱不但不是次等选择,反而是避免垃圾邮件的最佳选择。 - Kzqai

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接