如何在PHP中识别用户?

时间:2011-08-25 08:52:48

标签: php ip mac-address

我有这么大的问题,我已经考虑了2天了。我写了一个关于捕获未注册(访客)用户的小类,他们可以通过URL尝试SQL注入攻击,经过2次实验,他们的IP在我的数据库中被阻止(所以在数组中我存储了一些标志),

$blockSigns = array ("'", "/", "\", ":", "//", "and so on");

但:

  1. IP不是一个好的解决方案(如果服务器在代理服务器下,PHP无法看到LAN IP_s),甚至它也无法阻止它。我无法阻止192.168.1.10:)
  2. 我不需要WAN IP,因为有一个n00b,我无法阻止公司的网站。
  3. PHP无法捕获Mac地址(mac不包含在标题中)
  4. 我想阻止作为访客的用户,所以我不知道他们的用户名或邮件或其他东西
  5.   

    if(isset($ _ SESSION [“user”])){       $ user = $ _SESSION [“user”]; } else {       $ user =“unknown”; }

    1. 我读到perl有一些名为NET :: MAC的API,

      http://metacpan.org/pod/Net::MAC

    2. 我决定通过perl查找用户mac地址并将其集成到PHP中。可能吗? 如果是,请怎么样?我不明白。 如果没有:

      我该如何解决这个问题?如果他/她没有注册,我如何识别用户?有机会吗?如果您已经遇到过这类问题,请分享您的经验。提前谢谢......

3 个答案:

答案 0 :(得分:6)

不可能 获取用户的MAC地址。您的服务器看到的唯一mac地址是它所连接的路由器的MAC地址。如果您阻止此操作,则会阻止所有流量进入您的服务器。

正如@Jon所说,如果你的申请是安全的,你不应该关心那些试图注入东西的人。

顺便提一下,检测SQL注入的方法非常糟糕。特别是':,但在大多数情况下,其他字符完全有效。例如,用户的真实姓名可能包含'。但是,您根本不需要添加此类检测代码 - 如果您正确地转义所有不受信任的输入,或者为查询使用预准备语句(更好),您的应用程序根本不容易受到SQL注入的攻击。<​​/ p>

答案 1 :(得分:0)

您可以尝试将ip与用户代理字符串以及插件等更多信息一起使用。但如果有人尝试使用他的公司浏览器,那么ip和用户代理应该是相同的。

所以唯一的解决方案是:

使您的页面安全,以便无法进行SQL注入

答案 2 :(得分:0)

可能没有最终的解决方案。如果您知道注册用户的IP,则只允许他们访问您的页面(Apache服务器上的.htacces)。你也可以尝试在用户注册后设置cookie,然后你就可以检查是否存在指定的cookie(只有当用户在同一台​​计算机上只使用一个浏览器时我才有可能,所以你也可以设置它在每次登录时)。当用户关闭浏览器时,会话总是结束。