如何在PHP中识别用户?

DVX*_*DVX 0 php ip mac-address

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

$blockSigns = array ("'", "/", "\", ":", "//", "and so on");
Run Code Online (Sandbox Code Playgroud)

但:

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

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

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

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

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

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

Thi*_*ter 6

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

正如@Jon所说,如果您的应用程序是安全的,您不应该关心尝试注入事物的人.

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