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 文件扩展名 获取函数
Jun 03 PHP
Apache2中实现多网站域名绑定的实现方法
Jun 01 PHP
PHP得到mssql的存储过程的输出参数功能实现
Nov 23 PHP
php登陆页的密码处理方式分享
Oct 14 PHP
PHP+shell实现多线程的方法
Jul 01 PHP
php正则表达式获取内容所有链接
Jul 24 PHP
laravel 5.3中自定义加密服务的方案详解
May 09 PHP
PHP中TP5 上传文件的实例详解
Jul 31 PHP
PHP实现的折半查找算法示例
Dec 19 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
PHP进阶学习之Geo的地图定位算法详解
Jun 19 PHP
laravel清除视图缓存的代码
Oct 23 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隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
如何使用PHP获取指定日期所在月的开始日期与结束日期
2013/08/01 PHP
iOS10推送通知开发教程
2016/09/19 PHP
PHP获取文件扩展名的方法实例总结
2017/06/10 PHP
PHP获取星期几的常用方法小结
2018/12/18 PHP
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
2019/05/09 PHP
jQuery基础知识filter()和find()实例说明
2010/07/06 Javascript
jquery二级目录选中当前页的css样式
2016/12/08 Javascript
详解在vue-cli项目下简单使用mockjs模拟数据
2018/10/19 Javascript
Vue.js上传图片到阿里云OSS存储的方法示例
2018/12/13 Javascript
纯异步nodejs文件夹(目录)复制功能
2019/09/03 NodeJs
Vue vm.$attrs使用场景详解
2020/03/08 Javascript
js实现html滑动图片拼图验证
2020/06/24 Javascript
selenium 反爬虫之跳过淘宝滑块验证功能的实现代码
2020/08/27 Javascript
python的正则表达式re模块的常用方法
2013/03/09 Python
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
使用python编写脚本获取手机当前应用apk的信息
2014/07/21 Python
Python和Perl绘制中国北京跑步地图的方法
2016/03/03 Python
Python 模拟购物车的实例讲解
2017/09/11 Python
Flask框架通过Flask_login实现用户登录功能示例
2018/07/17 Python
python实现简单成绩录入系统
2019/09/19 Python
python  logging日志打印过程解析
2019/10/22 Python
Python 实现opencv所使用的图片格式与 base64 转换
2020/01/09 Python
Python Tensor FLow简单使用方法实例详解
2020/01/14 Python
在python3中使用shuffle函数要注意的地方
2020/02/28 Python
深入了解Python装饰器的高级用法
2020/08/13 Python
Python中Pyspider爬虫框架的基本使用详解
2021/01/27 Python
英国最大的汽车交易网站:Auto Trader UK
2016/09/23 全球购物
adidas泰国官网:adidas TH
2020/07/11 全球购物
圣彼得堡鲜花配送:Semicvetic
2020/09/15 全球购物
会计电算化个人自我评价
2013/11/17 职场文书
教师评优事迹材料
2014/01/10 职场文书
中专毕业生自我鉴定
2014/02/02 职场文书
党的群众路线教育实践活动学习笔记范文
2014/11/06 职场文书
2014年个人工作总结模板
2014/12/15 职场文书
幼儿园大班教育随笔
2015/08/14 职场文书