代码审计

Posted on 2022-01-06 11:31  Fnalist123  阅读(44)  评论(0)    收藏  举报

in_array函数强转缺陷

  可以查看in_array函数介绍

    in_array(mixed $needlearray $haystackbool $strict = false): bool

  语法为:in_array(需要搜索的值,搜索数组,是否匹配类型)

  默认不加第三个参数时,会设置为false,即不匹配类型,在某些时候,例如字符串转为数值时会存在强转缺陷,因为字符串转为数字都为0,如果是以数字开头的,就会取值到字符串位置为止。

如下代码测试:

  

可以看到当lala值为1abcd时,inarray在进行匹配时会先将字符串转换为数字,即为1,结果返回为true。

 修复:

        第三个参数改为true,in_array在匹配时会匹配类型,类型不一致会返回false

仍然传入lala=1abced,可以看到已经返回false