1.漏洞原因:
include是编写php网站中最常用的函数,并且支持相对路径。有很多php脚本直接把某输入变量作为include的参数,造成任意引用脚本、绝对路径泄露等漏洞。看以下代码:
...
$includepage=$_get[includepage];
include($includepage);
...
很明显,我们只需要提交不同的includepage变量就可以获得想要的页面。如果提交一个不存在的页面,就可以使php脚本发生错误而泄露实际绝对路径(这个问题的解决办法在下面的文章有说明)。
2.漏洞解决:
这个漏洞的解决很简单,就是先判断页面是否存在再进行include。或者更严格地,使用数组对可include的文件作出规定。看以下代码:
$pagelist=array(test1.php,test2.php,test3.php); //这里规定可进行include的文件
if(isset($_get[includepage])) //判断是否有$includepage
{
$includepage=$_get[includepage];
foreach($pagelist as $prepage)
{
if($includepage==$prepage) //检查文件是否在允许列表中
{
include($prepage);
$checkfind=true;
break;
}
}
if($checkfind==true){ unset($checkfind); }
else{ die(无效引用页!); }
}
这样就可以很好地解决问题了。
小提示:有此问题的函数还有:require(),require_once(),include_once(),readfile()等,在编写的时候也要注意。
未对输入变量进行过滤
共8页: 上一页12345678下一页
http://www.bkjia.com/phpjc/364303.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/364303.htmltecharticle滥用include 1.漏洞原因: include是编写php网站中最常用的函数,并且支持相对路径。有很多php脚本直接把某输入变量作为include的参数,造成任...
