01 弱数据类型的安全问题
02 Hash比较
03 bool比较
04 数字转换比较
05 switch比较
06 数组比较
PHP的数据类型有很多,包含:字符串(String)、整型(Integer)、浮点型(Float)、布尔型(Boolean)、数组(Array)、对象(Object)、空(Null)和资源(Resource)。
但PHP是一种弱类型语言,这造就了PHP的简单易学,但也容易写出漏洞。
弱类型指的是变量无需类型声明,在代码执行过程中,可以动态变换。
01 弱数据类型的安全问题
不同类型的数据在进行比较的时候,会自动进行类型转换。
例如:
var_dump(false == 0); var_dump(false == ''); var_dump(false == '0'); var_dump(0 == '0'); var_dump(0 == '0xxx'); var_dump(0 == 'xxx');
你觉得上面有正确的判断吗?
答案:以上判断式均为真。
在使用弱类型机制的时候需要特别留意以下几种比较,包括:Hash比较、bool比较、数字转换比较、switch比较以及数组比较。
02 Hash比较
哈希(Hash)用于将任意长度的输入通过散列算法变换成固定长度的输出,其特点就是很难找到逆向规律,使用Hash算法可以提高存储空间的利用率,可以提高数据的查询效率,也可