PHP代码审计_用==与===的区别
背景介绍
比较
==
与===
的差别
== 是等于符号,=== 是恒等于符号,两个符号的功能都是用来比较两个变量是否相等的,只不过两个符号的比较维度不一样,导致各自的使用领域是不一样的。
# 使用案例
0==0
返回true
0=="0"
返回true
0===0
返回true
0==="0"
返回flase
# 总结
=== 比较两个变量的值和类型
== 只比较两个变量的值
那么就可以得出== 两个变量中的一个变量替换成别的类型就会有绕过的风险
如何审计
代码审计中先搜索哪个表达式里使用了==比较操作符,在跟踪其中的变量是否来之外部输入,如果是外部输入的,那就有绕过风险。
绕过案例1
<?php
header("Content-type: text/html; charset=utf-8");
$密码=000000;
$input="a中文"; # 外部输入的密码
if($密码==$input){
echo "密码正确!";
}else{
echo "密码错误!";
};
?>
返回:密码正确!
用=== 可以避免
绕过案例2
md5('240610708')==md5('QNKCDZO'); //True
md5('240610708')===md5('QNKCDZO'); //False
PHP代码审计_用==与===的区别的更多相关文章
- Objective-C 中self.与_访问方式的区别
Objective-C中属性self.a与_a访问的区别: 在OC中我们可以通过指令@property定义属性. OC对属性封装了许多方法,同时也会自动实现一些方法,相比实例变量,感觉更加面向对象些. ...
- iOS 开发_..和self...的区别以及使用
相信很多初学者对_和self.之间的区别并没有一个大致的认识,那么下面对两者的区别做一个简单的介绍: 至于重写set和get方法,简要说明一下,当我们使用@property这用法之后,系统便会自动给我 ...
- Python中_,__,__xx__的区别
_xx 单下划线开头 Python中没有真正的私有属性或方法,可以在你想声明为私有的方法和属性前加上单下划线,以提示该属性和方法不应在外部调用.如果真的调用了也不会出错,但不符合规范. #! /usr ...
- 1: java开发_""和null的区别
原文地址:http://www.cnblogs.com/hongten/archive/2012/11/08/java_null.html 在代码中: 1 //name可以为"", ...
- java开发_""和null的区别
转自:http://www.cnblogs.com/hongten/archive/2012/11/08/java_null.html#undefined 在代码中: 1 //name可以为" ...
- python _/__/__**__区别
"_"单下划线:"单下划线 " 开始的成员变量叫做保护变量,意思是只有类对象(即类实例)和子类对象自己能访问到这些变量,需通过类提供的接口进行访问:不能用'fr ...
- Python中_,__,__xx__方法区别
_xx 单下划线开头 Python中没有真正的私有属性或方法,可以在你想声明为私有的方法和属性前加上单下划线,以提示该属性和方法不应在外部调用.如果真的调用了也不会出错,但不符合规范. 方法就是以单下 ...
- MyBatis 3.0_[tp-24-25]_映射文件_参数处理_#与$取值区别_#{}更丰富的用法
笔记要点出错分析与总结 /**================Mybatis参数值的获取:#和$符号的区别=============== * #{}:可以获得map中的值或者pojo对象属性的值; * ...
- IBM笔试题(_与equals的区别)
http://topic.csdn.net/t/20050325/08/3879427.html 题目:Integer i = new Integer(42) Long l ...
随机推荐
- HDU 6900 Residual Polynomial【分治 NTT】
HDU 6900 Residual Polynomial 题意: 给出一个多项式\(f_1(x) = \sum_{i=0}^na_ix^i\) 对于任意\(i>=2\),满足\(f_i(x) ...
- Consonant Fencity Gym - 101612C 暴力二进制枚举 Intelligence in Perpendicularia Gym - 101612I 思维
题意1: 给你一个由小写字母构成的字符串s,你可以其中某些字符变成大写字母.如果s中有字母a,你如果想把a变成大写,那s字符串中的每一个a都要变成A 最后你需要要出来所有的字符对,s[i]和s[i-1 ...
- zjnu1725 COCI (类似二维树状数组模拟)
Description The 3rd round of COCI is already here! In order to bet on predict the scores, we have as ...
- hdu1217 Arbitrage
Problem Description Arbitrage is the use of discrepancies in currency exchange rates to transform on ...
- C# 异常重试策略
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 01.原生态jdbc程序中问题总结
1.数据库启动包配置到工程目录中(mysql5.1) mysql-connector-java-5.1.7-bin.jar 2.jdbc原生态操作数据库(程序) 操作mysql数据库 1 packag ...
- Xtrabackup 物理备份
目录 Xtrabackup 安装 Xtrabackup 备份介绍 Xtrabackup全量备份 准备备份目录 全量备份 查看全量备份内容 Xtrabackup 全量备份恢复数据 删除所有数据库 停止数 ...
- RT-Thread学习笔记1-启动顺序与线程创建
目录 1. 启动顺序 2. 堆范围 3. 线程创建 3.1 线程代码(入口函数) 3.2 线程控制块 3.3 线程栈 4. 系统滴答时钟 5. GPIO驱动架构操作IO 6. 线程优先级 & ...
- js map(Number) All In One
js map(Number) All In One map() 方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值. let newArray = arr.map(callb ...
- Sentry React SourceMaps All In One
Sentry React SourceMaps All In One React https://docs.sentry.io/platforms/javascript/guides/react/ h ...