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 获取远程网页内容的函数
Sep 08 PHP
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
Jun 18 PHP
关于PHPDocument 代码注释规范的总结
Jun 25 PHP
linux使用crontab实现PHP执行计划定时任务
May 10 PHP
destoon后台网站设置变成空白的解决方法
Jun 21 PHP
php文件读取方法实例分析
Jun 20 PHP
学习php设计模式 php实现模板方法模式
Dec 08 PHP
PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法
Apr 01 PHP
PHP对象克隆clone用法示例
Sep 28 PHP
PHP中字符与字节的区别及字符串与字节转换示例
Oct 15 PHP
php安全配置记录和常见错误梳理(总结)
Mar 28 PHP
老生常谈PHP 文件写入和读取(必看篇)
May 22 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注入实例
2006/10/09 PHP
php实现paypal 授权登录
2015/05/28 PHP
php session实现多级目录存放实现代码
2016/02/03 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
2016/11/28 PHP
javascript json2 使用方法
2010/03/16 Javascript
node.js中的fs.lstatSync方法使用说明
2014/12/16 Javascript
Javascript基础教程之switch语句
2015/01/18 Javascript
详解Vue自定义过滤器的实现
2017/01/10 Javascript
使用Promise链式调用解决多个异步回调的问题
2017/01/15 Javascript
原生JS实现不断变化的标签
2017/05/22 Javascript
深究AngularJS如何获取input的焦点(自定义指令)
2017/06/12 Javascript
lhgcalendar时间插件限制只能选择三个月的实现方法
2017/07/03 Javascript
JavaScript判断浏览器和hack滚动条的写法
2017/07/23 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
2017/08/16 Javascript
vue-cli常用设置总结
2018/02/24 Javascript
如何基于vue-cli3.0构建功能完善的移动端架子
2019/04/24 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
2019/06/04 Javascript
linux系统使用python监控apache服务器进程脚本分享
2014/01/15 Python
详解Python中的strftime()方法的使用
2015/05/22 Python
Python实现截屏的函数
2015/07/25 Python
详解Python 模拟实现生产者消费者模式的实例
2017/08/10 Python
python中数据爬虫requests库使用方法详解
2018/02/11 Python
python:pandas合并csv文件的方法(图书数据集成)
2018/04/12 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
2019/05/07 Python
Python Django view 两种return的实现方式
2020/03/16 Python
python计算auc的方法
2020/09/09 Python
Python模拟登录requests.Session应用详解
2020/11/17 Python
欧洲最大的美妆零售网站:Feelunique
2017/01/14 全球购物
Aeropostale官网:美国著名校园品牌及青少年服饰品牌
2019/03/21 全球购物
俄罗斯在线手表和珠宝商店:AllTime
2019/09/28 全球购物
护士自荐信怎么写
2013/10/18 职场文书
儿童生日会策划方案
2014/05/15 职场文书
纪念九一八事变演讲稿:青少年应树立远大理想
2014/09/14 职场文书
工作作风整顿个人剖析材料
2014/10/11 职场文书
2014党的群众路线教育实践活动总结材料
2014/10/31 职场文书
Spring Data JPA的Audit功能审计数据库的变更
2021/06/26 Java/Android