正在卓尼小乱 发表于 2018-9-15 20:01:39

求问一段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:}

claws0n 发表于 2018-9-15 20:01:40

抱歉,不习惯手机的输入。
post 是传入的数组,但每一次循环是取数组的元素。基本上这样的数组的元素是字典,所以下标索引变成键名。
每次循环,可以提出 key,value 两个值,再传入函数进行比对。不是数组哦

RIXO 发表于 2018-9-16 22:53:20

。。。。。偶尔看到这个板块,居然就你一个人!!!!哈哈哈哈哈

claws0n 发表于 2018-9-19 00:11:40

什么语言 c# 吗?可以帮你找找,会花点时间。

RIXO 发表于 2018-9-19 11:04:35

claws0n 发表于 2018-9-19 00:11
什么语言 c# 吗?可以帮你找找,会花点时间。

哇,太过分啦!!!

正在卓尼小乱 发表于 2018-9-20 15:47:11

claws0n 发表于 2018-9-19 00:11
什么语言 c# 吗?可以帮你找找,会花点时间。

应该是是php,我给你题目链接:http://ctf5.shiyanbar.com/web/pcat/source.txt
这时实验吧的题目,要登录:http://www.shiyanbar.com/ctf/practice
题目名:因缺思订的绕过。

正在卓尼小乱 发表于 2018-9-20 15:48:10

RIXO 发表于 2018-9-16 22:53
。。。。。偶尔看到这个板块,居然就你一个人!!!!哈哈哈哈哈

这板块是没啥人。。。不过会躲起来的。{:10_277:}

正在卓尼小乱 发表于 2018-9-20 18:34:25

claws0n 发表于 2018-9-20 16:51
抱歉,不习惯手机的输入。
post 是传入的数组,但每一次循环是取数组的元素。基本上这样的数组的元素是字 ...

forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数

ok,我想我可能懂了,之前搜索的时候,没有注意foreach()函数是调用数组的每个元素,每个,很重要{:10_277:}

我现在的理解是,foreach()遍历作为参数的数组的每个元素,每一次都将值传递给AttackFilter()函数,在那边进行过滤。

对吗?

正在卓尼小乱 发表于 2018-9-20 18:39:25

claws0n 发表于 2018-9-20 16:51
抱歉,不习惯手机的输入。
post 是传入的数组,但每一次循环是取数组的元素。基本上这样的数组的元素是字 ...

鱼c的帖子怎么发不出去了?我刚刚发了提示没找到帖子{:10_277:}{:10_277:}{:10_277:}

claws0n 发表于 2018-9-20 18:54:14

正在卓尼小乱 发表于 2018-9-20 18:34
forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数

ok,我想我可能懂了,之前搜索的时候 ...

嗯,他的数组是混合型的,元素是字典,c++ 的 map,或者看作是两行的数组。每次遍历,可提取其一或两个元素,然后传入函数
页: [1]
查看完整版本: 求问一段foreach()函数和过滤检测调用代码的具体意思