PHP弱类型安全问题笔记
一、类型转换问题
intval();
var_dump(intval('1asdfasd')); //1
var_dump(intval('awqw12')); //0
var_dump(intval(array())); //0
var_dump(intval(array('foo','val'))); //1
var_dump(intval(0x1A)); //26 十六进制转换
var_dump(intval('asdfqwer')); //0
intval 如果转换值为字符串时,不会返回错误,而是返回 0,如果转换值为数组时,有两种情况,转换值为空数组时,则会返回0,否则就会返回 1
注意:php用32位内存来保存一个整数,32位可以表示4294967296个数字,有符号的话就是-2147483647到2147483648;
二、内置函数松散性问题
switch();
$i='3adcd';
switch($i){
case 1:
echo 'i is 1';
break;
case 2:
echo 'i is 2';
break;
case 3:
echo 'i is 3';
break;
default:
echo 'i is default';
break;
}
以上结果,会进入switch case 3 里面,为什么会这样,如果switch是数字类型的case的判断时,switch会将其中的参数转换为int类,所以上述执行的时候,首先会把$i进行了类型转换,转换结果为3 ,所以。。。
in_array();
$arr = [0,1,2,3,'test'];
var_dump(in_array('abd',$arr)); // true
var_dump(in_array('1bc',$arr)); // true
为什么上面执行结果会是这样的,后面通过查询手册,官方给出的说法是, in_array 默认是走松散比较方式,只比值是否相等,而不比较值的类型是否一样,所以才有上面这种结果,不过可以设置in_array 函数第三个参数,设置为True就是严谨的比较方式。
以上都是我们平常开发需要注意的地方。
PHP弱类型安全问题笔记的更多相关文章
- PHP弱类型安全问题的写法和步骤
鉴于目前PHP是世界上最好的语言,PHP本身的问题也可以算作是web安全的一个方面.在PHP中的特性就是弱类型,以及内置函数对于传入参数的松散处理.本篇文章主要就是记录我在做攻防平台上面遇到的PHP的 ...
- PHP代码审计笔记--弱类型存在的安全问题
0x01 前言 PHP 是一门弱类型语言,不必向 PHP 声明该变量的数据类型,PHP 会根据变量的值,自动把变量转换为正确的数据类型. 弱类型比较,是一个比较蛋疼的问题,如左侧为字符串,右侧为一个整 ...
- PHP弱类型:WordPress Cookie伪造
1 PHP弱类型 PHP是弱类型语言,所以变量会因为使用场景的不同自动进行类型转换.PHP中用 == 以及 != 进行相等判断时,会自动进行类型转换,用 === 以及 !== 进行判断时不会自动转换类 ...
- CTF中常见的 PHP 弱类型漏洞总结
作者:ZERO 所属团队:Arctic Shell 参考资料: http://archimesan.me/2017/12/21/php%E5%BC%B1%E7%B1%BB%E5%9E%8B%E6 ...
- [C#] 类型学习笔记二:详解对象之间的比较
继上一篇对象类型后,这里我们一起探讨相等的判定. 相等判断有关的4个方法 CLR中,和相等有关系的方法有这么4种: (1) 最常见的 == 运算符 (2) Object的静态方法ReferenceEq ...
- [代码审计]php弱类型总结
0x01 前言 php是世界上最好的语言,所以php自身的安全问题也是web安全的一个方面.由于其自身弱类型语言的特性以及内置函数对于传入参数的松散处理,所以会带来很多的问题,这里将进行简要介绍. 弱 ...
- PHP弱类型需要特别注意的问题
下面介绍的问题都已验证, 总结:字符数据比较==不比较类型,会将字符转数据,字符转数字(转换直到遇到一个非数字的字符.即使出现无法转换的字符串,intval()不会报错而是返回0).0e,0x开头的字 ...
- [JS2] JS是弱类型
<html> <head> <title>JavaScript 是弱类型的</title> <Script Language="Java ...
- sqlite 的比较等运算是根据不同的值而不同的,并不是根据的字段类型,因为 sqlite 是弱类型字段
sqlite 的比较等运算是根据不同的值而不同的,并不是根据的字段类型,因为 sqlite 是弱类型字段 --------------------------------------------- ...
随机推荐
- Design Mode 之 创建模式
A.创建模式 首先,简单工厂模式不属于24种涉及模式. A0.简单工厂模式 简单工厂模式,分为三种:普通简单工厂.多方法简单工厂.静态方法简单工厂. A01.普通 就是建立一个工厂类,对实现了同一接口 ...
- 1.7.7 Spell Checking -拼写检查
1. SpellCheck SpellCheck组件设计的目的是基于其他,相似,terms来提供内联查询建议.这些建议的依据可以是solr字段中的terms,外部可以创建文本文件, 或者其实lucen ...
- CBM-业务组件模型
- jQery无缝滚动效果
思路: 赋值所有li,添加到ul末尾,重新计算ul宽度 每次移动一个固定的值,当超出一半时,将ul拉回原位 以下代码 <!DOCTYPE html> <html> <he ...
- 重构10-Extract Method(提取方法)
我们要介绍的重构是提取方法.这个重构极其简单但却大有裨益.首先,将逻辑置于命名良好的方法内有助于提高代码的可读性.当方法的名称可以很好地描述这部分代码的功能时,可以有效地减少其他开发者的研究时间.假设 ...
- ASCII码表 char(9),char(10),char(13)等
char(9) 水平制表符 char(10) 换行 char(13) 回车 测试ASCII码的方法: 在记事本中,按住ALT键,同时用小键盘输入十进制的ASCII码,然后松手,就可以看到效果了! ...
- DEDECMS 调用上级栏目标题
在内容页,使用以下代码: {dede:field name='position' runphp='yes'} $tc="-"; //分隔符 $tw=$GLOBALS['cfg_li ...
- linux和Windows下文本格式转换
1.安装转换工具:sudo apt-get install tofrodos 2.开始转换:fromdos grade.sh
- JavaScript--DOM基础(19)
// DOM(Document Object Model)即文档对象模型,针对HTML和XML文档的API(应用程序接口); // DOM描绘了一个层次化的节点树,运行开发人员可以添加/移除和修改页面 ...
- autocomplete.js的使用(1):自动输入时,出现下拉选择框
autocomplete.js可以实现自动输入文本值,并出现下拉框 js引用:所需要的autocomplete文件需要在网站中自行下载. <!--自动输入文本值所需的jquery文件--> ...