PHP魔术引号所带来的安全问题分析

 更新时间:2014年07月15日 08:50:02   投稿:shichen2014  
这篇文章主要介绍了PHP魔术引号所带来的安全问题分析,对于安全编码来说非常重要!需要的朋友可以参考下

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 Imagick完美实现图片裁切、生成缩略图、添加水印

    PHP Imagick完美实现图片裁切、生成缩略图、添加水印

    这篇文章主要介绍了PHP Imagick完美实现图片裁切、生成缩略图、添加水印的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • PHP实现根据银行卡号判断银行

    PHP实现根据银行卡号判断银行

    公司业务需要用到根据银行卡号查询银行卡的相关信息,如归属地,归属银行,卡的种类等,仔细研究了一番,分享给大家
    2015-04-04
  • 老生常谈PHP 文件写入和读取(必看篇)

    老生常谈PHP 文件写入和读取(必看篇)

    下面小编就为大家带来一篇老生常谈PHP 文件写入和读取(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • phpstorm编辑器乱码问题解决

    phpstorm编辑器乱码问题解决

    这篇文章主要介绍了phpstorm编辑器乱码问题的解决方案,非常的实用,给需要的小伙伴们参考下。
    2014-12-12
  • php array 转json及java 转换 json数据格式操作示例

    php array 转json及java 转换 json数据格式操作示例

    这篇文章主要介绍了php array 转json及java 转换 json数据格式操作,结合实例形式分析了PHP针对array数组转json以及Java操作Map、List、对象与json格式转换的相关实现技巧,需要的朋友可以参考下
    2019-11-11
  • php的sso单点登录实现方法

    php的sso单点登录实现方法

    这篇文章主要介绍了php的sso单点登录实现方法,实例分析了sso单点登录的原理与具体实施步骤,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • php json与xml序列化/反序列化

    php json与xml序列化/反序列化

    在WEB开发中,php对象的序列化与反序列化经常使用,比较主流的有json格式与xml格式的序列化与反序列化。今天我们就来看看是如何用的。
    2013-10-10
  • php 如何设置一个严格控制过期时间的session

    php 如何设置一个严格控制过期时间的session

    本篇文章主要介绍了php设置一个严格控制过期时间的session的方法,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-05-05
  • PHP字符串的递增和递减示例介绍

    PHP字符串的递增和递减示例介绍

    这篇文章主要介绍了PHP中字符串的递增和递减,需要的朋友可以参考下
    2014-02-02
  • mysql 中InnoDB和MyISAM的区别分析小结

    mysql 中InnoDB和MyISAM的区别分析小结

    InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。
    2008-04-04

最新评论