PHP中使用addslashes函数转义的安全性原理分析

yipeiwu_com6年前PHP代码库

本文实例讲述了PHP中使用addslashes函数转义的安全性原理分析。分享给大家供大家参考。具体分析如下:

先来看一下ECshop中addslashes_deep的原型

复制代码 代码如下:
function addslashes_deep($value) {
    if (empty($value)) {
        return $value;  //如为空,直接返回;
    } else {
        return is_array($value) ? array_map('addslashes_deep', $value): addslashes($value);
    }  //递归处理数组,直至遍历所有数组元素;
}

addslashes_deep函数本身没有问题,但使用时得注意一点
恰好今天也是在网上看到了有人发了关于使用这个函数使用的BUG注入漏洞
这个函数在引用回调函数addslashes时,只对数据的值进行转义,所以如果使用者在此过程中引用数组的键进行特定处理时,存在$key注入风险,此时可更改addslashes_deep函数,使其同时对键值进行转义,或者使用时明确不引用键内容。

希望本文所述对大家的PHP程序设计有所帮助。

相关文章

屏蔽PHP默认设置中的Notice警告的方法

PHP的默认设置是显示Notice警告提示,这会造成页面无法正常显示出来。你有没定义的变量直接使用了。不过编PHP的时候本来就不像C++那么严格,编程的时候经常还会利用这个特点。 在把自...

php算法实例分享

只打印0   具体个数由输入的参数n决定   如n=5就打印00000 <?php $n = $_GET['n']; for ($i=0; $i < $n...

PHP5.3.1 不再支持ISAPI

要在IIS6上使用高版本PHP,必须安装fastCGI扩展,        Microsoft FastCGI Extens...

php通过文件流方式复制文件的方法

本文实例讲述了php通过文件流方式复制文件的方法。分享给大家供大家参考。具体分析如下: php的stream_copy_to_stream()函数可以被用来将一个流中的数据复制到另一个。...

PHP正则表达式 /i, /is, /s, /isU等介绍

PHP正则表达式 /i, /is, /s, /isU等 都是些什么东西呢? i 不区分大小写 s 模式中的圆点元字符(.)匹配所有的字符,包括换行符 x 模式中的空白字符除了被转义的或在...