layout: post title: php tips categories: php tag: tips —
弱类型
- 引入
比如 在$a == $b的比较中 $a = null; $b = false; //为真 $a = ''; $b = 0; //同样为真
- 当int遇上string
var_dump(0 == '0'); // true var_dump(0 == 'abcdefg'); // true var_dump(0 === 'abcdefg'); // false var_dump(1 == '1abcdef'); // true
当有一个对比参数是整数的时候,会把另外一个参数强制转换为整数。
相当于对字符串部分intval再和整数部分比较,其实也就是改变了zval.type的内容 尤为注意的是,’1assd’的转换后的值是1,而‘asdaf’是0
也说明了intval会从第一位不是数字的单位开始进行
if($a>1000){
mysql_query('update ... .... set value=$a')
}
你以为这时候进入该支的万无一失为整数了
其实$a可能是1001/**/union…
-
语句条件的松散判断
伪随机
PHP使用的三种PRNG算法,所以如果攻击者可以获取随机数种子,那么就知道对应算法的结果。 1,线行同余方法 例如:lcg_value 2,梅森旋转算法 例如 mt_rand 3,原生C语言支持的函数 例如rand 以上实际上在内部函数也复用了,例如array_rand,uniqid,也就是说攻击者如果可以跑一遍所有可能的随机数种子,那么以上所有的值它都可以获取。