您当前位置: 首页 » 敏感函数 » in_array()

in_array()

2017年2月24日 | 发表评论(0) 查看评论

in_array()函数是用来判断一个值是否在某一个数组列表里面,通常的判断方式如下:

in_array(‘b’,array(‘a’,’b’,’c’))

这样是没有什么问题的,但是有一些开发者在使用中的不规范,导致一些安全漏洞的产生。

一、松散比较

先来看一下官方的说法

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] ) // 在 haystack 中搜索 needle,如果没有设置 strict 则使用宽松的比较。

也就是说如果直接使用in_array($a,$arr)的话,$strict默认为false,默认使用宽松比较,来看一下松散比较会导致哪些问题:

二、in_array()在判断之前会强制进行类型转换,导致绕过if语句

有些程序员习惯将in_array()用于id判断,就容易出现一些问题:

 

如果我们请求http://www.am0s.com/test.php?a=1′ and 1=1

可以看到虽然输入的1′ and 1=1并不在数组1,2,3,4里面,但是仍然绕过了if判断,进入了if,导致我们可以绕过检查进行注入。

分类:

敏感函数

| 标签:

,