[PHP安全特性学习]is_numeric()函数安全漏洞
简介
PHP函数的安全特性-is_numerice() 函数
简介
PHP is_numeric() 函数
is_numeric() 函数用于检测变量是否为数字或数字字符串。
语法:
bool is_numeric ( mixed $var )
$var:要检测的变量。
返回值:
如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE。
函数正常使用测试代码:
<?php
$var_name1=678;
$var_name2="a678";
$var_name3="678";
$var_name4="runoob.com";
$var_name5=698.99;
$var_name6=array("a1","a2");
$var_name7=+125689.66;
if (is_numeric($var_name1))
{
echo "$var_name1 是数字" . PHP_EOL;
}
else
{
echo "$var_name1 不是数字" . PHP_EOL ;
}
if (is_numeric($var_name2))
{
echo "$var_name2 是数字" . PHP_EOL ;
}
else
{
echo "$var_name2 不是数字" . PHP_EOL ;
} $result=is_numeric($var_name3);
echo "[ $var_name3 是数字吗? ]" .var_dump($result) . PHP_EOL;
$result=is_numeric($var_name4);
echo "[ $var_name4 是数字吗? ]" .var_dump($result) . PHP_EOL;
$result=is_numeric($var_name5);
echo "[ $var_name5 是数字吗? ]" .var_dump($result) . PHP_EOL;
$result=is_numeric($var_name6);
echo "[ $var_name6 是数字吗? ]" .var_dump($result) . PHP_EOL;
$result=is_numeric($var_name7);
echo "[ $var_name7 是数字吗? ]" .var_dump($result);
?>
返回结果:
678 是数字
a678 不是数字
bool(true)
[ 678 是数字吗? ]
bool(false)
[ runoob.com 是数字吗? ]
bool(true)
[ 698.99 是数字吗? ]
bool(false)
[ Array 是数字吗? ]
bool(true)
[ 125689.66 是数字吗? ]
这个函数和mysql结合起来就容易出问题,那是因为is_numeric判断的时候,当碰到16进制数的时候,也会判断成数字
is_numeric函数对于空字符%00,无论是%00放在前后都可以判断为非数值,而%20空格字符只能放在数值后。所以,查看函数发现该函数对对于第一个空格字符会跳过空格字符判断,接着后面的判断!
函数漏洞测试代码:
<?php
echo '传入:admin:'.is_numeric('admin');
echo '<hr>';
echo '传入十六进制后的admin:'.is_numeric('0x61646D696E'); //十六进制转化的admin
?>

%00绕过 其他的也能绕过例如在1后面加a 成为1a 之类的

[PHP安全特性学习]is_numeric()函数安全漏洞的更多相关文章
- [PHP安全特性学习]strcmp()函数安全漏洞
简介 PHP函数的安全特性-strcmp() 函数 php-strcmp()函数 PHP strcmp() 函数 strcmp() 函数比较两个字符串. 注释:strcmp() 函数是二进制安全的,且 ...
- Javascript学习5 - 函数
原文:Javascript学习5 - 函数 在Javascript中,函数和对象是交织在一起的.有些函数的特性与对象相关联.这一点的内容在第六部分会讨论到. 这一部分主要讨论函数与其它比较熟悉的语言( ...
- Java8 新特性学习 Lambda表达式 和 Stream 用法案例
Java8 新特性学习 Lambda表达式 和 Stream 用法案例 学习参考文章: https://www.cnblogs.com/coprince/p/8692972.html 1.使用lamb ...
- java8 新特性学习笔记
Java8新特性 学习笔记 1主要内容 Lambda 表达式 函数式接口 方法引用与构造器引用 Stream API 接口中的默认方法与静态方法 新时间日期 API 其他新特性 2 简洁 速度更快 修 ...
- PWN学习之格式化字符串漏洞
目录 PWN学习之格式化字符串漏洞 格式化输出函数 格式化字符串漏洞 漏洞利用 使程序崩溃 栈数据泄露 任意地址内存泄漏 栈数据覆盖 任意地址内存覆盖 PWN学习之格式化字符串漏洞 格式化输出函数 可 ...
- [二进制漏洞]PWN学习之格式化字符串漏洞 Linux篇
目录 [二进制漏洞]PWN学习之格式化字符串漏洞 Linux篇 格式化输出函数 printf函数族功能介绍 printf参数 type(类型) flags(标志) number(宽度) precisi ...
- JavaScript学习09 函数本质及Function对象深入探索
JavaScript学习09 函数本质及Function对象深入探索 在JavaScript中,函数function就是对象. JS中没有方法重载 在JavaScript中,没有方法(函数)重载的概念 ...
- Memcached‘do_item_get’函数安全漏洞
漏洞名称: Memcached‘do_item_get’函数安全漏洞 CNNVD编号: CNNVD-201401-175 发布时间: 2014-01-15 更新时间: 2014-01-15 危害等级: ...
- Memcached‘process_bin_delete’函数安全漏洞
漏洞名称: Memcached‘process_bin_delete’函数安全漏洞 CNNVD编号: CNNVD-201401-174 发布时间: 2014-01-15 更新时间: 2014-01-1 ...
随机推荐
- java 实体对象转Map公共类
java 实体对象转Map公共类 package org.kxtkx.portal.utils; import java.lang.reflect.Field; import java.util.Ha ...
- 【API管理 APIM】如何查看APIM中的Request与Response详细信息,如Header,Body中的参数内容
问题描述 通过APIM门户或者是Developer门户,我们可以通过Test功能测试某一个接口,通过Trace可以获取非常详细的Request,Response的信息,包含Header,X-Forwa ...
- Redis实现缓存与分布式锁
缓存与分布式锁 哪些数据适合放入缓存 即时性.数据一致性要求不高的 访问量大且更新频率不高的数据 选择redis做为缓存中间件 <dependency> <groupId>or ...
- 立即执行函数 - Js函数笔记
立即执行函数 定义:此类函数没有声明,在执行一次后即释放,适合做初始化. 针对初始化功能的函数,同时遵循一句话,只有表达式才能被执行符号执行 1.(function() {...}()); - W3C ...
- 攻防世界-web2
打开题目直接一梭子代码,给我们了个加密的密文,然我们解出flag 审计一波 先时将flag字符串逆序,然后每一个ascii码数值+1,然后base64加密,然后逆序,然后再rot13加密 得到加密的密 ...
- 用node.js给C#写一个数据表的实体类生成工具
虽然微软提供了T4模板,但是我感觉非常难用.哪儿比得上直接用脚本来写模板来的爽. 因为要给一个老项目做周边的工具,需要连接到数据库. 我习惯性用EntityFrameworkCore来做,因为毕竟从出 ...
- Navicat连接远程MySQL8.0数据库
前言: 如果你有一台服务器,并且安装了Mysql8.0及以上版本数据库.此时想通过本地Navicat软件连接远程服务器上的mysql数据库.那么接下来你就要完成以下准备工作: 登录远程服务器上的数据库 ...
- Spring源码分析之Bean的创建过程详解
前文传送门: Spring源码分析之预启动流程 Spring源码分析之BeanFactory体系结构 Spring源码分析之BeanFactoryPostProcessor调用过程详解 本文内容: 在 ...
- Luogu P4234 最小差值生成树
题意 给定一个 \(n\) 个点 \(m\) 条边的有权无向图,求出原图的一棵生成树使得该树上最大边权与最小边权的差值最小. \(\texttt{Data Range:}1\leq n\leq 5\t ...
- PHP百度地图开发之距离计算的实例分享
/** * 计算两个坐标之间的距离(米) * @param float $fP1Lat 起点(纬度) * @param float $fP1Lon 起点(经度) * @param float $fP2 ...