php intval 变小,php intval() 小数时安全漏洞分析
变量转成整数类型。 语法: int intval(mixed var, int [base]); 返回值: 整数 函数种类: PHP 系统功能 内容说明 本函数可将变量转成整数类型。可省略的参数 base 是转换的基底,默认值为 10。转换的变量 var 可以为数组或类之外的任何类型变量。 intval()使
变量转成整数类型。
语法: int intval(mixed var, int [base]);
返回值: 整数
函数种类: PHP 系统功能
内容说明
本函数可将变量转成整数类型。可省略的参数 base 是转换的基底,虚拟主机,默认值为 10。转换的变量 var 可以为数组或类之外的任何类型变量。
intval()使用不当的安全漏洞分析
intval函数有个特性:”直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时()结束转换”,在某些应用程序里由于对intval函数这个特性认识不够,错误的使用导致绕过一些安全判断导致安全漏洞.
二、分析
代码如下 复制代码
PHP_FUNCTION(intval)
{
zval **num, **arg_base;
int base;
switch (ZEND_NUM_ARGS()) {
case 1:
if (zend_get_parameters_ex(1, &num) == FAILURE) {
WRONG_PARAM_COUNT;
}
base = 10;
break;
case 2:
if (zend_get_parameters_ex(2, &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, 1, 0);
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范围从2至36,或0.参数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制等。
流程为:
strtol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时()结束转换,香港虚拟主机,并将结果返回。
那么当intval用在if等的判断里面,将会导致这个判断实去意义,从而导致安全漏洞.
三、测试代码
代码如下 复制代码
$o = 0.1;
for($a = 1; $a < 100; $a++){
$o += 0.1;
echo “
intval($o) = “.intval($o);
if(intval($o)){
print(“ true”);
}else{
print(“ false”);
}
}?>
输出结果:
intval(0.2) = 0 false
intval(0.3) = 0 false
intval(0.4) = 0 false
intval(0.5) = 0 false
intval(0.6) = 0 false
intval(0.7) = 0 false
intval(0.8) = 0 false
intval(0.9) = 0 false
intval(1) = 0 false
intval(1.1) = 1 true
intval(1.2) = 1 true
intval(1.3) = 1 true
intval(1.4) = 1 true
intval(1.5) = 1 true
intval(1.6) = 1 true
intval(1.7) = 1 true
intval(1.8) = 1 true
intval(1.9) = 1 true
intval(2) = 2 true
…..
php intval 与 int 的区别
代码如下 复制代码
$t ='165';
echo gettype((int)($t));
echo '
';
echo gettype(intval($t));
//输出结果:integer integer value:165
$t ='a165';
echo gettype((int)($t));
echo '
';
echo gettype(intval($t));
//结果 integer integer value:0,0
$string="2a";
$string1=intval($string);
echo '$string1的值:'.$string1.'$string2的值:';//单引号不会输出变量,美国服务器,将原样输出
$string2=(int)($string);
echo $string2
更多详细内容请查看:
php intval 变小,php intval() 小数时安全漏洞分析相关推荐
- MUI - 解决弹出输入法时页面高度变小导致底部上浮的问题
MUI - 解决弹出输入法时页面高度变小导致底部上浮的问题 参考文章: (1)MUI - 解决弹出输入法时页面高度变小导致底部上浮的问题 (2)https://www.cnblogs.com/phil ...
- 爱剪辑编辑好视频,导出时,微信上视频长宽变小解决方法!
爱剪辑编辑好视频,导出时,微信上视频长宽变小解决方法! 参考文章: (1)爱剪辑编辑好视频,导出时,微信上视频长宽变小解决方法! (2)https://www.cnblogs.com/gfwei/p/ ...
- Threejs使用精灵Sprite作为标签,鼠标悬浮精灵上时鼠变小手
1,介绍 该示例使用的是 r95版本Three.js库. 主要实现功能:引用模型进行展示,使用精灵Sprite作为标签,鼠标悬浮精灵上时变小手. 效果图如下: 2,主要说明 使用精灵Sprite作为标 ...
- 视频教程-Word从小白变小能手 -Office/WPS
Word从小白变小能手 熟练python 独立开发相关程序 熟练使用django,tornado 框架相关开发技术 熟悉常用机器学习和深度学习算法的软件库TensorFlow,如线性回归.逻辑回归.聚 ...
- 面试题:mysql 表删除一半数据,B+树索引文件会不会变小???
今日寄语:努力的阶段,往往是最不养生的阶段! 一张千万级的数据表,删除了一半的数据,你觉得B+树索引文件会不会变小? (答案在文章中!!) 我们先来做个实验,看看表的大小是如何变化的?? 做个实验,让 ...
- javascript基础——文字变大变小className的使用及JS浮动的兼容用法
文字变大变小,详情页比较常见的那种 <!DOCTYPE html> <html lang="en"> <head><meta charse ...
- 电脑达人教你怎么解决Win7系统盘渐渐变小的问题
一般在安装软件时,安装下载后如果没有改动都会默认的存在C盘上的,所以C盘所占据的内存就会很多很大,但是有时C盘的存在也是虚拟的内存占据了,所以要解决关于系统盘越来越小的问题,那么现在一起来看看怎么的解 ...
- iOS AVAudioSession 配置(录音完声音变小问题)
有这么一个场景,首先我们录音,录音完再播放发现音量变小了: 百思不得其解,查看API发现AVAudioSession里面有这么一个选项, 如果你的app涉及到了音视频通话以及播放其他语音,那么当遇到声 ...
- 出门就背他了!可伸缩的背包,自由变大变小,还有防盗功能!
▲ 点击查看 出门能不背包就不背包,几乎是小爆身边每个男生的人生信条. 不背包时,两手空空一身轻,潇洒有型. 但一旦到了必须背包,比如五一外出回家或旅游的时候,男同胞们翻箱倒柜找出来的背包,大多都是这 ...
最新文章
- 谷歌全新轻量级新模型ALBERT刷新三大NLP基准
- MYSQL专题-MySQL三大日志binlog、redo log和undo log
- handlersocket安装配置
- 一起玩转LiteOS组件:Pixman
- 【干货】2020年陆奇最新万字演讲:世界新格局下的创业创新机会.pdf(附下载链接)...
- 华为发布最强 AI 处理器昇腾 910,全场景 AI 框架 MindSpore 将开源
- 计算机达人成长之路(8)连载
- 终结者2显示天网服务器,《终结者2:审判日》天网觉醒秘测开服公告
- SECS/GEM series: Protocol Layer
- 在属性级情感分析中结合BERT和语法信息
- 思维导图,UML在线画图工具
- 合肥市关于印发合肥市大数据发展行动纲要(2016—2020)的通知
- C#打造一个开源webgis(四)地图客户端(上)
- DB2查看事务日志使用空间
- burpsuite之CSRF测试
- python计算复数的辐角_Python 自定义类中的函数和运算符重载
- 51 Best DevOps Tools for #DevOps Engineers
- 用python计算π值(模拟法)
- 最新历史版本 :LINUX KERNEL 配置编译中文指南
- (4.3C)神奇的口袋