Myluzh Blog

PHP弱类型比较与引发漏洞的总结

2020-6-12 myluzh PHP

0x01 ==和===的问题 ==是比较运算,它不会去检查条件式的表达式的类型。 ===是恒等,它会检查查表达式的值与类型是否相等。 NULL,0,”0”,array()使用==和false比较时,都是会返回true的,而使用===却不会。 1.比较操作     一个数字和一个字符串进行比较,PHP会把字符串转换成数字再进行比较。PHP转换的规则的是:若字符串以数字开头,则取开头数字作为转换结果,若无则输出0。例如:123abc转换后应该是123,而abc则为0,0==0这当然是成立的啦!所以,0 ==’abc’是成立的。当有一个对比参数是整数的时候,会把另外一个参数强制转换为整数。 2.Hash比较 "0e132456789"=="0e7124511451155" //true "0e123456abc"=="0e1dddada" //false "0e1abc"=="0" //true 在进行比较运算时,如果遇到了0e\d+这种字符串,就会将这种字符串解析为科学计数法。所以上面例子中2个数的值都是0因而就相等了。如果不满足0e\d+这种...

阅读全文>>

标签: php 弱类型 漏洞

评论(0) (1140)