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 JSON格式数据交互实例代码详解
Jan 13 PHP
php whois查询API制作方法
Jun 23 PHP
php验证手机号码(支持归属地查询及编码为UTF8)
Feb 01 PHP
PHP 实现explort() 功能的详解
Jun 20 PHP
解析PHP中常见的mongodb查询操作
Jun 20 PHP
PHP中读取文件的8种方法和代码实例
Aug 05 PHP
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
Nov 08 PHP
PHP魔术方法的使用示例
Jun 23 PHP
php利用递归实现删除文件目录的方法
Sep 23 PHP
SAE实时日志接口SDK用法示例
Oct 09 PHP
php创建图像具体步骤
Mar 13 PHP
php自定义函数实现统计中文字符串长度的方法小结
Apr 15 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
重置版宣传动画
2020/04/09 魔兽争霸
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
2014/02/24 PHP
一个显示效果非常不错的PHP错误、异常处理类
2014/03/21 PHP
PHP正则验证Email的方法
2015/06/15 PHP
PHP的几个常用加密函数
2016/02/03 PHP
改变javascript函数内部this指针指向的三种方法
2010/04/23 Javascript
使用javascript获取flash加载的百分比的实现代码
2011/05/25 Javascript
jQuery中children()方法用法实例
2015/01/07 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
2015/08/13 Javascript
jQuery实用技巧必备(中)
2015/11/03 Javascript
jQuery继承extend用法详解
2016/10/10 Javascript
jQuery Easy UI中根据第一个下拉框选中的值设置第二个下拉框是否可以编辑
2016/11/29 Javascript
jQuery实现的背景颜色渐变动画效果示例
2017/03/24 jQuery
浅谈Angular文字折叠展开组件的原理分析
2017/11/24 Javascript
手把手教你vue-cli单页到多页应用的方法
2018/05/31 Javascript
浅谈vue加载优化策略
2019/03/19 Javascript
vue 添加和编辑用同一个表单,el-form表单提交后清空表单数据操作
2020/08/03 Javascript
vue Treeselect下拉树只能选择第N级元素实现代码
2020/08/31 Javascript
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
python中字典dict常用操作方法实例总结
2015/04/04 Python
python表格存取的方法
2018/03/07 Python
TensorFlow模型保存和提取的方法
2018/03/08 Python
Python之读取TXT文件的方法小结
2018/04/27 Python
详解python中的Turtle函数库
2018/11/19 Python
Python3 单行多行万能正则匹配方法
2019/01/07 Python
【python】matplotlib动态显示详解
2019/04/11 Python
python使用threading.Condition交替打印两个字符
2019/05/07 Python
详解用python写网络爬虫-爬取新浪微博评论
2019/05/10 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
2020/06/23 Python
HTML5本地存储之Web Storage应用介绍
2013/01/06 HTML / CSS
HTML5新增加的功能详解
2016/09/05 HTML / CSS
英国和爱尔兰的自炊式豪华度假小屋:Rural Retreats
2018/06/08 全球购物
Rossignol金鸡美国官网:始于1907年法国百年雪具品牌
2019/03/06 全球购物
2014信息技术专业毕业生自我评价
2014/01/17 职场文书
2015年国庆节慰问信
2015/03/23 职场文书
药房管理制度范本
2015/08/06 职场文书