-1

如何获取某人的 IP,然后检查该特定用户是否已经创建了 2 个用户?

比如,如果这个 ip:xx.xx.xxx.xx 已经成功注册了 2 个用户,那么取消他的第三个注册。

我怎样才能做到这一点?

4

2 回答 2

3

由于 IP 地址通常每天都会更改,并且此人可以在重新连接到他的提供商时获得一个新的 IP 地址,或者他可以使用代理,您的解决方案将无法正常工作。甚至不要尝试!

另请注意,多个用户可以是具有一个外部 IP 的更大网络的成员(如大学)。您将只允许其中一个人创建一个帐户。

您计划的解决方案将导致有效用户无法创建帐户但黑客可以轻松绕过限制甚至更好地阻止其他人创建帐户的情况。再次,不要尝试这个!

于 2013-07-05T21:06:39.607 回答
0

IP 地址信息

首先,您应该在这两个服务器变量中查找您的客户端 IP 地址,下面的第一个通常是最准确和最常用的,您可能还想使用第二个,但是请注意这可能会被您的客户端欺骗。

$_SERVER['REMOTE_ADDR'] // Normally here
$_SERVER['HTTP_X_FORWARDED_FOR'] // Sometimes if behind proxy

其次,互联网客户端的 IP 地址会定期更改,原因有几个;来自 ISP 的宽带服务的动态 IP、用户在互联网上的正常移动性,或者使用规避策略来突破您的 IP 限制安全的人(通常使用一种互联网代理服务)。

因此,您通常希望在用户注册时存储 IP,并在每次登录时更新此列表以保留该用户的 IP 历史记录。

接下来,当另一个人注册您的服务时,您需要将他们的 IP 地址与您的数据库内容的 IP 地址进行比较,但是在这里您需要小心。用户共享相同 IP 地址有很多正当理由,例如,工作场所或大学通常会有数千名用户使用单个公共 IP 地址。

指纹识别

最后,我知道一些服务会尝试从客户端捕获更多可识别信息,而不仅仅是它们正在使用的公共 IP 地址。

例如,从 PHP 中,您应该能够捕获诸如用户代理之类的信息:

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36

其他信息,如时区、HTTP 支持的标头、flash 版本、系统字体等……可以使用 PHP、Flash 和 Javascript 的混合物来捕获。这是一个很棒的网站,可以提供更多信息: http: //panopticlick.eff.org

正如您所看到的,保存到数据库中的这些信息可以创建用户计算机的非常准确和独特的表示,即指纹。即使您的用户在快速连续地看到相同的指纹组合时更改了他们的 IP 地址,也可能发生了一些狡猾的事情。

想法

因此,这实际上取决于您的应用程序,有些您可能只想尝试阻止人们注册多个帐户,在这种情况下,只需在注册时记录 IP 地址并进行比较即可。

其他人喜欢在线游戏,您希望真正确保任何人都不会被允许创建多个帐户,在这种情况下,您需要进行主机指纹识别并使用一些切割算法来尝试评估特定人的独特性,并且他们可能是您的其他用户之一更改登录名。

于 2013-07-05T21:29:10.890 回答