知识大全 php intval() 小数时安全漏洞分析

Posted 函数

篇首语:时间是把锋利的刀,成全过我的疯狂,也粉碎过我的梦想。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 php intval() 小数时安全漏洞分析相关的知识,希望对你有一定的参考价值。

变量转成整数类型         语法 int intval(mixed var int [base])         返回值 整数        函数种类 PHP 系统功能    内容说明        本函数可将变量转成整数类型 可省略的参数 base 是转换的基底 默认值为 转换的变量 var 可以为数组或类之外的任何类型变量     intval()使用不当的安全漏洞分析        intval函数有个特性 直到遇上数字或正负符号才开始做转换 再遇到非数字或字符串结束时()结束转换 在某些应用程序里由于对intval函数这个特性认识不够 错误的使用导致绕过一些安全判断导致安全漏洞     二 分析        代码如下 复制代码        PHP_FUNCTION(intval)                zval **num **arg_base;        int base;        switch (ZEND_NUM_ARGS())         case :        if (zend_get_parameters_ex( &num) == FAILURE)         WRONG_PARAM_COUNT;                base = ;        break;        case :        if (zend_get_parameters_ex( &num &arg_base) == FAILURE)         WRONG_PARAM_COUNT;                convert_to_long_ex(arg_base)         base = Z_LVAL_PP(arg_base)         break;        default:        WRONG_PARAM_COUNT;                RETVAL_ZVAL(*num )         convert_to_long_base(return_value base)                 Zend/zend_operators c 》convert_to_long_base()        ……        case IS_STRING:        strval = Z_STRVAL_P(op)         Z_LVAL_P(op) = strtol(strval NULL base)         STR_FREE(strval)         break;        当intval函数接受到字符串型参数是调用convert_to_long_base()处理 接下来调用Z_LVAL_P(op) = strtol(strval NULL base) 通过strtol函数来处理参数     函数原型如下         long int strtol(const char *nptr char **endptr int base)         这个函数会将参数nptr字符串根据参数base来转换成长整型数 参数base范围从 至 或 参数base代表采用的进制方式 如base值为 则采用 进制 若base值为 则采用 进制等         流程为         strtol()会扫描参数nptr字符串 跳过前面的空格字符 直到遇上数字或正负符号才开始做转换 再遇到非数字或字符串结束时()结束转换 并将结果返回         那么当intval用在if等的判断里面 将会导致这个判断实去意义 从而导致安全漏洞     三 测试代码        代码如下 复制代码        <?php        $o = ;        for($a = ; $a < ; $a++)        $o += ;        echo <br />intval($o) = intval($o)         if(intval($o))        print( &nbsp;true )         else        print( &nbsp;false )                 ?>    输出结果         intval( ) = false        intval( ) = false        intval( ) = false        intval( ) = false        intval( ) = false        intval( ) = false        intval( ) = false        intval( ) = false        intval( ) = false        intval( ) = true        intval( ) = true        intval( ) = true        intval( ) = true        intval( ) = true        intval( ) = true        intval( ) = true        intval( ) = true        intval( ) = true        intval( ) = true        ……    php intval 与 int 的区别        代码如下 复制代码        $t = ;        echo gettype((int)($t))         echo <hr> ;        echo gettype(intval($t))         //输出结果 integer integer value:         $t = a ;        echo gettype((int)($t))         echo <hr> ;        echo gettype(intval($t))         //结果 integer integer value:         $string= a ;        $string =intval($string)         echo $string 的值 $string $string 的值 ;//单引号不会输出变量 将原样输出        $string =(int)($string)         echo $string cha138/Article/program/Java/hx/201311/26835

相关参考

知识大全 2又8分之7化成小数是多少

2又8分之7化成小数是多少2又8分之7化成小数是多少分析:根据分数的意义2又7/8=2+7/8=2+0.875=2.8753右2分之1化成小数是多少?2右2分之1化成小数是多少?4分之3化成小数是多少

知识大全 web上存漏洞及原理分析、防范方法(安全文件上存方法)

cha138/Article/program/PHP/201311/20937

知识大全 php分析域名

  php分析域名!写法方法!调用就可以得出域名  <?//转载保留来源于//#######################分析域名#######################function

知识大全 php 注册时输入信息验证器的实现详解

本篇文章是对php中注册时输入信息验证器的实现方法进行了详细的分析介绍需要的朋友参考下   对输入信息进行验证的类(主要用于验证用户名密码重复密码邮箱可添加其它功能)复制代码代码如下:<

知识大全 PHP系统命令函数使用分析

PHP系统命令函数使用分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本篇文章是对PHP中系统命

知识大全 PHP注释实例分析

PHPWeb开发学习实录:PHP注释实例分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &n

知识大全 提升PHP执行速度全攻略分析

提升PHP执行速度全攻略分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  PHP的优点之一是速

知识大全 界定PHP代码实例分析

PHPWeb开发学习实录:界定PHP代码实例分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 用实例分析PHP5异常处理

用实例分析PHP5异常处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  <?php/***■㈠

知识大全 PHP函数的调用实例分析

PHPWeb开发学习实录:PHP函数的调用实例分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!