标题:
PHP的强制转换的几种方法
[打印本页]
作者:
fangzhen
时间:
2010-1-5 16:31
标题:
PHP的强制转换的几种方法
PHP中的强制转换要在转换的变量前加上用括号括起来的目标类型,还可以使用函数settype(),代码0x1.php如下 还可以使用intval() floatval() strval() 函数进行强制转换,代码0x2.php如下 当我们需要对变量进行强制类型转换时,通过以上方法,如若使用不当均会导致安全漏洞。
(二)模拟测试
我们对漏洞代码进行模拟测试,intval强制转换示例代码0x3.php: 运行结果: 123a and 1=1 123 $a并未被转换未整型,而是原样输出来了。相应的我们$a_safe才真正被强制转换了。 int强制转换示例代码0x4.php: 运行结果: 123b and 1=2 123 $b并未被转换为整型,还是原样输出来了。相应$b_safe被转换。 把上述安全隐患带入PHP的流程控制 If 示例代码0x5.php: 运行结果: 123.3c 123.3 我们可以看到第一个if判断条件并未将$c转换未浮点型数值,相应$c_safe被转换了。 switch 示例代码0x6.php: 运行结果: 123.3dIt's not safe 123It's safe $d在switch中并未被转换为整型,还是原样输出。而$d_safe则被转换了。 while 示例代码0x7.php 运行结果: Parse error: parse error in D:\xampp\htdocs\80vul\src\0x7.php on line 2 while中的判断永远为真,引起死循环,但$e并未被强制转换未整型。 经测试,得出结论,由于变量都是经过强制类型转换后,返回的值并未赋给某个变量,所以均存在漏洞隐患。
欢迎光临 PHP开发笔记 (http://phpvi.com/)
Powered by Discuz! 6.1.0