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一些服务器端特性的配置加强php的安全
Oct 09 PHP
发挥语言的威力--融合PHP与ASP
Oct 09 PHP
几个php应用技巧
Mar 27 PHP
PHP XML操作的各种方法解析(比较详细)
Jun 17 PHP
PHP5常用函数列表(分享)
Jun 07 PHP
PHP+apc+ajax实现的ajax_upload上传进度条代码
Jan 25 PHP
全面解析PHP操作Memcache基本函数
Jul 14 PHP
PHP Oauth授权和本地加密实现方法
Aug 12 PHP
PHP实现对xml的增删改查操作案例分析
May 19 PHP
Ajax+PHP实现的删除数据功能示例
Feb 12 PHP
php和C#的yield迭代器实现方法对比分析
Jul 17 PHP
php创建类并调用的实例方法
Sep 25 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 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
2015/12/07 PHP
PHP 绘制网站登录首页图片验证码
2016/04/12 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
2019/06/17 PHP
Array.prototype.slice.apply的使用方法
2010/03/17 Javascript
js+css实现增加表单可用性之提示文字
2013/06/03 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
2013/12/08 Javascript
JavaScript中的console.group()函数详细介绍
2014/12/29 Javascript
JQuery中上下文选择器实现方法
2015/05/18 Javascript
javascript实现获取服务器时间
2015/05/19 Javascript
JavaScript中计算网页中某个元素的位置
2015/06/10 Javascript
jquery插件splitScren实现页面分屏切换模板特效
2015/06/16 Javascript
微信企业号开发之微信考勤Cookies的使用
2015/09/11 Javascript
浅谈js中的三种继承方式及其优缺点
2016/08/10 Javascript
D3.js实现直方图的方法详解
2016/09/25 Javascript
vue使用监听实现全选反选功能
2018/07/06 Javascript
JS中验证整数和小数的正则表达式
2018/10/08 Javascript
vue引入静态js文件的方法
2020/06/20 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
2020/08/07 Javascript
[14:24]Optic Gaming vs PSG LGD BO3
2018/06/07 DOTA
可用于监控 mysql Master Slave 状态的python代码
2013/02/10 Python
简单说明Python中的装饰器的用法
2015/04/24 Python
Python入门之三角函数atan2()函数详解
2017/11/08 Python
python selenium xpath定位操作
2020/09/01 Python
app内嵌H5 webview 本地缓存问题的解决
2020/10/19 HTML / CSS
英国高档百货连锁店:John Lewis
2017/11/20 全球购物
Android面试宝典
2013/08/06 面试题
会计电算化专业毕业生求职信范文
2013/12/10 职场文书
学校大课间活动方案
2014/01/30 职场文书
农民工工资支付承诺函
2014/03/31 职场文书
创建青年文明号材料
2014/05/09 职场文书
高等教育学专业自荐书
2014/06/17 职场文书
公司领导九九重阳节发言稿2014
2014/09/25 职场文书
2014年语文教师工作总结
2014/12/18 职场文书
2015年校医个人工作总结
2015/07/24 职场文书
react 路由Link配置详解
2021/11/11 Javascript