记录注册用户的特定IP地址

时间:2013-07-05 21:04:09

标签: php

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

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

我该怎么做?

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分: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地址。

例如,从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地址并进行比较即可。

其他像网络游戏你想要真正确保不会允许任何人创建多个帐户,在这种情况下,您需要进行主机指纹识别并使用一些切割算法来尝试评估特定人员的独特性是的,他们可能是你的其他用户之一改变登录。