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 相关文章推荐
将OICQ数据转成MYSQL数据
Oct 09 PHP
php的ajax简单实例
Feb 27 PHP
easyui的tabs update正确用法分享
Mar 21 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
Jun 26 PHP
php过滤HTML标签、属性等正则表达式汇总
Sep 22 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
Apr 15 PHP
PHP图片加水印实现方法
May 06 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
Nov 14 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
May 06 PHP
Yii框架中使用PHPExcel的方法分析
Jul 25 PHP
使用Entrust扩展包在laravel 中实现RBAC的功能
Mar 16 PHP
PHP xpath提取网页数据内容代码解析
Jul 16 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遍历CSV类实例
2015/04/14 PHP
php微信公众号开发之秒杀
2018/10/20 PHP
js中cookie的使用详细分析
2008/05/28 Javascript
一句话JavaScript表单验证代码
2009/08/02 Javascript
js下将字符串当函数执行的方法
2011/07/13 Javascript
jQuery操作input值的各种方法总结
2013/11/21 Javascript
jquery预览图片实现鼠标放上去显示实际大小
2014/01/16 Javascript
jquery实现点击消失的代码
2014/03/03 Javascript
js查看一个函数的执行时间实例代码
2015/09/12 Javascript
angularjs学习笔记之简单介绍
2015/09/26 Javascript
React.js入门实例教程之创建hello world 的5种方式
2016/05/11 Javascript
微信小程序 表单Form实例详解(附源码)
2016/12/22 Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
2016/12/25 Javascript
详解Vue监听数据变化原理
2017/03/08 Javascript
js实现不提示直接关闭网页窗口
2017/03/30 Javascript
详解IWinter 一个路由转控制器的 Nodejs 库
2017/11/15 NodeJs
angularjs实现分页和搜索功能
2018/01/03 Javascript
nodejs简单实现TCP服务器端和客户端的聊天功能示例
2018/01/04 NodeJs
微信小程序实现手指触摸画板
2018/07/09 Javascript
Vuex 使用及简单实例(计数器)
2018/08/29 Javascript
详解如何在vue项目中使用lodop打印插件
2018/09/27 Javascript
详解微信小程序回到顶部的两种方式
2019/05/09 Javascript
Javascript表单序列化原理及实现代码详解
2020/10/30 Javascript
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
[00:18]天涯墨客三技能展示
2018/08/25 DOTA
Python 文件操作实现代码
2009/10/07 Python
分享Python文本生成二维码实例
2016/01/06 Python
python利用sklearn包编写决策树源代码
2017/12/21 Python
Python Selenium模块安装使用教程详解
2020/07/09 Python
美国知名的在线旅游服务网站:Priceline
2016/07/23 全球购物
纽约手袋品牌:KARA
2018/03/18 全球购物
外语专业毕业生个人的自荐信
2013/11/19 职场文书
学生拾金不昧表扬信
2014/01/21 职场文书
个人自我鉴定总结
2014/03/25 职场文书
校园之声广播稿
2015/08/18 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书