求问一段foreach()函数和过滤检测调用代码的具体意思
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()函数,进行安全过滤。
而按照函数中开头的条件判断语句: if (is_array($StrValue)),只判断了传入的value值,这并不是一个数组呀?似乎也不会产生数组的存在,不知道这一句是什么意思。
我只能模糊地理解成foreach()将用户输入的语句传入AttackFilter()函数,然后在函数中进行安全过滤,希望有人能清晰地为我讲解一下。
谢谢!!
{:10_254:} {:10_254:} {:10_254:} 抱歉,不习惯手机的输入。
post 是传入的数组,但每一次循环是取数组的元素。基本上这样的数组的元素是字典,所以下标索引变成键名。
每次循环,可以提出 key,value 两个值,再传入函数进行比对。不是数组哦 。。。。。偶尔看到这个板块,居然就你一个人!!!!哈哈哈哈哈 什么语言 c# 吗?可以帮你找找,会花点时间。 claws0n 发表于 2018-9-19 00:11
什么语言 c# 吗?可以帮你找找,会花点时间。
哇,太过分啦!!! claws0n 发表于 2018-9-19 00:11
什么语言 c# 吗?可以帮你找找,会花点时间。
应该是是php,我给你题目链接:http://ctf5.shiyanbar.com/web/pcat/source.txt
这时实验吧的题目,要登录:http://www.shiyanbar.com/ctf/practice
题目名:因缺思订的绕过。
RIXO 发表于 2018-9-16 22:53
。。。。。偶尔看到这个板块,居然就你一个人!!!!哈哈哈哈哈
这板块是没啥人。。。不过会躲起来的。{:10_277:} claws0n 发表于 2018-9-20 16:51
抱歉,不习惯手机的输入。
post 是传入的数组,但每一次循环是取数组的元素。基本上这样的数组的元素是字 ...
forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数
ok,我想我可能懂了,之前搜索的时候,没有注意foreach()函数是调用数组的每个元素,每个,很重要{:10_277:}
我现在的理解是,foreach()遍历作为参数的数组的每个元素,每一次都将值传递给AttackFilter()函数,在那边进行过滤。
对吗?
claws0n 发表于 2018-9-20 16:51
抱歉,不习惯手机的输入。
post 是传入的数组,但每一次循环是取数组的元素。基本上这样的数组的元素是字 ...
鱼c的帖子怎么发不出去了?我刚刚发了提示没找到帖子{:10_277:}{:10_277:}{:10_277:} 正在卓尼小乱 发表于 2018-9-20 18:34
forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数
ok,我想我可能懂了,之前搜索的时候 ...
嗯,他的数组是混合型的,元素是字典,c++ 的 map,或者看作是两行的数组。每次遍历,可提取其一或两个元素,然后传入函数
页:
[1]