我有这么大的问题,我已经考虑了2天了。我写了一个关于捕获未注册(访客)用户的小类,他们可以通过URL尝试SQL注入攻击,经过2次实验,他们的IP在我的数据库中被阻止(所以在数组中我存储了一些标志),
$blockSigns = array ("'", "/", "\", ":", "//", "and so on");
但:
if(isset($ _ SESSION [“user”])){ $ user = $ _SESSION [“user”]; } else { $ user =“unknown”; }
我读到perl有一些名为NET :: MAC的API,
我决定通过perl查找用户mac地址并将其集成到PHP中。可能吗? 如果是,请怎么样?我不明白。 如果没有:
我该如何解决这个问题?如果他/她没有注册,我如何识别用户?有机会吗?如果您已经遇到过这类问题,请分享您的经验。提前谢谢......
答案 0 :(得分:6)
不可能 获取用户的MAC地址。您的服务器看到的唯一mac地址是它所连接的路由器的MAC地址。如果您阻止此操作,则会阻止所有流量进入您的服务器。
正如@Jon所说,如果你的申请是安全的,你不应该关心那些试图注入东西的人。
顺便提一下,检测SQL注入的方法非常糟糕。特别是'
和:
,但在大多数情况下,其他字符完全有效。例如,用户的真实姓名可能包含'
。但是,您根本不需要添加此类检测代码 - 如果您正确地转义所有不受信任的输入,或者为查询使用预准备语句(更好),您的应用程序根本不容易受到SQL注入的攻击。</ p>
答案 1 :(得分:0)
您可以尝试将ip与用户代理字符串以及插件等更多信息一起使用。但如果有人尝试使用他的公司浏览器,那么ip和用户代理应该是相同的。
所以唯一的解决方案是:
使您的页面安全,以便无法进行SQL注入
答案 2 :(得分:0)
可能没有最终的解决方案。如果您知道注册用户的IP,则只允许他们访问您的页面(Apache服务器上的.htacces)。你也可以尝试在用户注册后设置cookie,然后你就可以检查是否存在指定的cookie(只有当用户在同一台计算机上只使用一个浏览器时我才有可能,所以你也可以设置它在每次登录时)。当用户关闭浏览器时,会话总是结束。