PHP魔术引号所带来的安全问题分析


Posted in PHP onJuly 15, 2014

PHP通过提取魔术引号产生的“\”字符会带来一定的安全问题,例如下面这段代码片段:

// foo.php?xigr='ryat
function daddslashes($string, $force = 0) {
!defined('MAGIC_QUOTES_GPC') && define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc());
if(!MAGIC_QUOTES_GPC || $force) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = daddslashes($val, $force);
}
} else {
$string = addslashes($string);
}
}
return $string;
}
...
foreach(array('_COOKIE', '_POST', '_GET') as $_request) {
foreach($$_request as $_key => $_value) {
$_key{0} != '_' && $$_key = daddslashes($_value);
}
}
echo $xigr['hi'];
// echo \

上面的代码原本期望得到一个经过daddslashes()安全处理后的数组变量$xigr['hi'],但是没有对变量$xigr做严格的类型规定,当我们提交一个字符串变量$xigr='ryat,经过上面的处理变为\'ryat,到最后$xigr['hi']就会输出\,如果这个变量引入到SQL语句,那么就会引起严重的安全问题了,对此再来看下面的代码片段:

...
if($xigr) {
foreach($xigr as $k => $v) {
$uids[] = $v['uid'];
}
$query = $db->query("SELECT uid FROM users WHERE uid IN ('".implode("','", $uids)."')");

利用上面提到的思路,通过提交foo.php?xigr[]='&xigr[][uid]=evilcode这样的构造形式可以很容易的突破GPC或类似的安全处理,形成SQL注射漏洞!对此应给与足够的重视!

PHP 相关文章推荐
php 中include()与require()的对比
Oct 09 PHP
UTF8编码内的繁简转换的PHP类
Jul 09 PHP
php 服务器调试 Zend Debugger 的安装教程
Sep 25 PHP
php代码收集表单内容并写入文件的代码
Jan 29 PHP
PHP-redis中文文档介绍
Feb 07 PHP
浅谈php中mysql与mysqli的区别分析
Jun 10 PHP
PHP实现把数字ID转字母ID
Aug 12 PHP
php通过文件头判断格式的方法
May 28 PHP
php fseek函数读取大文件两种方法
Oct 12 PHP
PHP异常处理定义与使用方法分析
Jul 25 PHP
Laravel 连接(Join)示例
Oct 16 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
Nov 26 PHP
PH P5.2至5.5、5.6的新增功能详解
Jul 14 #PHP
PHP文件锁定写入实例解析
Jul 14 #PHP
ThinkPHP惯例配置文件详解
Jul 14 #PHP
2014年10个最佳的PHP图像操作库
Jul 14 #PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
Jul 14 #PHP
mantis安装、配置和使用中的问题小结
Jul 14 #PHP
kohana框架上传文件验证规则写法示例
Jul 14 #PHP
You might like
PHP语言中global和$GLOBALS[]的分析 之二
2012/02/02 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
2014/05/19 PHP
PHP文件操作之获取目录下文件与计算相对路径的方法
2016/01/08 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
2016/11/10 PHP
PHP解决高并发的优化方案实例
2020/12/10 PHP
ExtJS下grid的一些属性说明
2009/12/13 Javascript
Javascript的常规数组和关联数组对比小结
2012/05/24 Javascript
一个支持任意尺寸的图片上下左右滑动效果
2014/08/24 Javascript
Javascript核心读书有感之类型、值和变量
2015/02/11 Javascript
jQuery中 prop() attr()使用详解
2015/05/19 Javascript
非常优秀的JS图片轮播插件Swiper的用法
2017/01/03 Javascript
微信小程序 input输入及动态设置按钮的实现
2017/10/27 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
Emberjs 通过 axios 下载文件的方法
2019/09/03 Javascript
JS document对象简单用法完整示例
2020/01/14 Javascript
vue插槽slot的简单理解与用法实例分析
2020/03/14 Javascript
JavaScript自定义超时API代码实例
2020/04/30 Javascript
浅谈Vue static 静态资源路径 和 style问题
2020/11/07 Javascript
[00:10]神之谴戒
2019/03/06 DOTA
[01:06:54]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第一场 1月24日
2021/03/11 DOTA
python模拟enum枚举类型的方法小结
2015/04/30 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
python实现多层感知器
2019/01/18 Python
详解Django配置优化方法
2019/11/18 Python
Pytorch 实现数据集自定义读取
2020/01/18 Python
基于python实现音乐播放器代码实例
2020/07/01 Python
python 如何对logging日志封装
2020/12/02 Python
用python对excel进行操作(读,写,修改)
2020/12/25 Python
皇家道尔顿官网:Royal Doulton
2017/12/06 全球购物
捷克移动配件网上商店:ProMobily.cz
2019/03/15 全球购物
德国自然时尚和有机产品购物网站:Waschbär
2019/05/29 全球购物
学习优秀党务工作者先进事迹材料思想报告
2014/09/17 职场文书
单位委托函范文
2015/01/29 职场文书
运动会通讯稿300字
2015/07/20 职场文书
重阳节主题班会
2015/08/17 职场文书
详解盒子端CSS动画性能提升
2021/05/24 HTML / CSS