如何让用户更难创建多个帐户?

信息安全 网络 php 虚拟专用网 ip欺骗 mac 欺骗
2021-08-31 11:45:16

我想知道提高网站安全性的最佳方法,以便单个用户无法创建多个帐户。

什么所有的用户都可以被追踪?我在想:

  • IP地址
  • MAC地址
  • 浏览器详情
  • 计算机名称及其详细信息

我知道 IP 地址可以被欺骗,但是否有办法仍然识别被禁止的用户?也许是 IP、MAC 和计算机详细信息的组合?

我们可以根据用户的 MAC 地址禁止用户吗?有没有其他方法可以跟踪他们以阻止他们创建多个帐户?

3个回答

没有有效的方法来防止专门的攻击者创建多个帐户。无论您做什么,攻击者仍然可以创建多个“sock puppet”帐户。您能做的最好的事情就是提高创建额外帐户的成本。

一种方法是要求用户提供手机号码,验证用户的电话号码(通过呼叫它,说出随机的验证码,并让用户将验证码输入网站,就像 Google Voice 一样)。这样就可以保证每个手机号最多关联一个账号。这并不能阻止创建多个帐户——例如,攻击者仍然可以购买多个一次性手机——但它会增加攻击者的成本,并且可能足以说服他/她去打扰其他人。缺点是它会阻止某些人使用您的网站,例如,如果他们没有手机,或者如果他们不愿意与您分享他们的手机号码(人们可能不愿意分享他们的手机号码有一个他们没有的网站'

另一种可能的方法是要求用户使用 Facebook 帐户进行身份验证,并依靠 Facebook 来检查唯一性。这也远非完美:人们仍然可以创建虚假的 Facebook 帐户。缺点是要求人们通过 Facebook 登录可能会阻止许多人使用您的网站,并且不利于隐私。它对不想使用 Facebook 登录、不使用 Facebook 或不想与您分享他们的 Facebook 信息的人不友好。

另请参阅如何防止在线比赛中作弊(额外投票)?有关各种缓解措施的更多讨论。

补充 DW 的优秀答案......

您无法通过路由器读取客户端的 MAC 地址。MAC 地址可以很容易地更改(如此简单,它甚至不提供“欺骗”的前缀)。

浏览器用户代理不是唯一的,而且更改起来也很简单。

您将在服务器端看到的唯一“计算机名”是 IP 地址的 DNS PTR 记录 - 因此请参阅 IP 地址的讨论。

IP地址可以被欺骗。在不访问路由器的情况下通过路由 TCP 流欺骗 IP 地址是很难做到的,但是 Internet 上的大部分用户从池中获取临时 IP 地址,并且越来越多的用户将共享一个 IP 地址。使用 whois 记录中的网络名称可以帮助识别不同 IP 地址的用户 - 但单独使用它会产生大量误报。

你可能想看看我博客上的这篇文章,讨论浏览器指纹识别和其他来源的链接,尤其是evercookie ,但请记住,这种方法依赖于颠覆浏览器的安全模型。

使用基于 cookie 的 FSM 和图灵测试将有助于确保有人坐在远程端,从而防止机器人投票。

我会尝试让多个帐户比拥有一个帐户更具吸引力。也许有用户通过良好的行为积累了像SO这样的特权(新帐户的特权很少,但可以做的很少)所以禁令的效果是失去所有特权?可能只做静默封禁,所以被封禁的用户不知道他们已被封禁,但其他人看不到他们的活动?

如果您必须禁止用户并希望以某种方式识别他们,我将主要依靠 IP 地址来识别(a)精明的用户将拥有多个 IP 地址,并且(b)可能与非禁止用户共享 IP 地址。

我不会像 panoptclick.com 这样的用户浏览器指纹识别(更改指纹很简单 - 例如,使用不同的浏览器(firefox/chrome/opera/konquerer/safari/IE)或计算机,更改您的用户代理字符串;安装/卸载字体/插件)。

我不会使用evercookie——通过更换计算机或虚拟机很容易避免,而且有点不道德。

您可能还希望为声称其 IP 地址已被禁止且从未滥用您的服务的用户建立补救措施。例如,今天将 100.101.102.103 分配给被您的 ISP 禁止的用户 A,明天将其分配给良好且不应该被禁止的用户 B(尤其适用于移动设备)。或者您与公寓中的几个想要单独帐户的人共用一个 wifi 路由器,但他们的帐户似乎都具有相同的 IP 地址(例如,您的路由器使用 NAT)。

请记住,网站基于 TCP 运行。因此,欺骗 IP 地址并非易事;您的 IP 地址就像一个邮寄地址——它包含路由信息,并且 TCP 在发送信息(如网页 GET/POST 请求)之前需要来回握手。因此,虽然在 TCP 握手的初始步骤中很容易说我使用的是位于加利福尼亚的假 IP 地址,而不是您在纽约的真实 IP 地址,但数据包最终会被路由到加利福尼亚的某台计算机而不是你在纽约的,因为你永远不会看到服务器的响应,你会'

当然,合法地获得另一个 IP 地址来设置代理的成本不到 5 美元,而且大多数精通技术的人已经有了几个可以使用的 IP 地址。但他们这样做变得不那么方便了。