当前位置:中国站长下载文章中心网页编程PHP编程 → 在PHP中全面阻止SQL注入式攻击之三

在PHP中全面阻止SQL注入式攻击之三

减小字体 增大字体 作者:编辑整理  来源:互联网  发布时间:2008-9-15 22:03:56
本安全的一个重要的部分是对它们进行测试。为此,最好的办法是你自己创建SQL代码注入测试。
在此,我们提供了一个这种测试的示例。在本例中,我们测试对一个SELECT语句的注入式攻击。


<?php
//被测试的保护函数
functionsafe($string){
 return"'".mysql_real_escape_string($string)."'"
}
//连接到数据库
///////////////////////
//试图进行注入
///////////////////////
$exploit="lemming'AND1=1;";
//进行清理
$safe=safe($exploit);
$query="SELECT*FROManimalsWHEREname=$safe";
$result=mysql_query($query);
//测试是否保护是足够的
if($result&&mysql_num_rows($result)==1){
 exitt"Protectionsucceeded:\n
 exploit$exploitwasneutralized.";
}
else{
 exit("Protectionfailed:\n
 exploit$exploitwasabletoretrieveallrows.");
}
?>

如果你想创建这样的一个测试集,并试验基于不同的SQL命令的各种不同的注入,那么,你将会很快地探测出你的保护策略中的任何漏洞。一旦纠正这些问题,那么,你就可以很有把握-你已经建立起真正的注入式攻击保护机制。

六、小结

在本系列文章一开始,我们通过一个SQL注入讨论分析了对你的脚本的特定威胁-由不恰当的用户输入所致。之后,我们描述了SQL注入的工作原理并精确地分析了PHP是怎样易于被注入的。然后,我们提供了一个实际中的注入示例。之后,我们推荐一系列措施来使试图的注入攻击变为无害的-这将分别通过确保使所有提交的值以引号封闭,通过检查用户提交值的类型,以及通过过滤掉你的用户输入的潜在危险的字符等方法来实现的。最后,我们推荐,你最好对你的校验例程进行抽象,并针对更改一个现有应用程序提供了脚本示例。然后,我们讨论了第三方抽象方案的优缺点。

上一页  [1] [2]