in_array
in_array介绍
先来看一下in_array函数的介绍:
从上图的介绍可以看出:
- 这个函数的漏洞点就是如果第三个参数没有被设置或者设置为false时,那么从 h a y s t a c k 比较 haystack比较 haystack比较needle时,采用的就是弱类型比较。
- 如果第三个参数设置为了true,那么就会同时再检查类型。
弱类型比较tips
弱类型比较时,如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换成数值并且比较按照数值来进行。
"0e"开头的字符串参与弱类型比较时,会将0e这类字符串识别为科学技术法的数字,0的无论多少次方都是零,所以会将它转换成0。
纯字符串与数值进行弱类型比较时,会先将字符串强制转换成数值,也就是0。
看一个例子:
<?php
var_dump('1a' == 1); //true
var_dump('1a' === 1); //false
var_dump('0e' == 0); //true
var_dump('0e' === 0); //false
var_dump('1234abc' == 1234); //true
var_dump('1234abc' === 1234); //false
var_dump('0e12344abc' == 0); //true
var_dump('0e12344abc' === 0); //false
var_dump('abcdefghik' == 0); //true
var_dump('abcdefghik' === 0); //false
?>
弱类型比较总结
1. md5碰撞
<?php
if (isset($_GET['username'<