Board logo

标题: 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