function AttackFilter($StrKey,$StrValue,$ArrReq){
if (is_array($StrValue)){
$StrValue=implode($StrValue);
}
if (preg_match("/".$ArrReq."/is",$StrValue)==1){
print "水可载舟,亦可赛艇!";
exit();
}
}
$filter = "and|select|from|where|union|join|sleep|benchmark|,|\(|\)";
foreach($_POST as $key=>$value){
AttackFilter($key,$value,$filter);
}
如上代码,主要在foreach()函数中,我知道是POST输入的如果是数组,键名就会给$key,值给$value,然后作为参数传给AttackFilter()函数,进行安全过滤。
而按照函数中开头的条件判断语句:,只判断了传入的value值,这并不是一个数组呀?似乎也不会产生数组的存在,不知道这一句是什么意思。
我只能模糊地理解成foreach()将用户输入的语句传入AttackFilter()函数,然后在函数中进行安全过滤,希望有人能清晰地为我讲解一下。
谢谢!!
|