PHP之弱类型理解

2019-03-24  本文已影响0人  gelinlang

在PHP中有两种比较的符号 == 与 ===,一种是松散的,一种是严格的。
== 在进行比较的时候,会先将字符串类型转化成相同,然后再比较。
=== 在进行比较的时候,会先判断两种字符串的类型是否相等,然后再比较。
官方文档的链接为:http://php.net/manual/zh/types.comparisons.php
如下列的比较都为true。

<?php 
var_dump(1=="1"); 
var_dump(123=='123asd'); 
var_dump("1"==true); 
var_dump("0"==false);
 var_dump(-1 == true);
var_dump(true=="php"); 
var_dump(0==NULL);
 var_dump(0=="php"); 
var_dump(0==""); 
var_dump(NULL==false); 
var_dump(""==false); 
var_dump(array()==false); 
var_dump(array()==NULL); ?>

实例如md5绕过,利用MD5无法对数组进行处理导致左右等式都为NULL,或利用MD5处理后为0e开头的,在比较是0e会被当作科学计数法,0的n次方都等于0从而绕过。

放张官方的图片


上一篇 下一篇

猜你喜欢

热点阅读