深入PHP magic quotes的详解


Posted in PHP onJune 17, 2013

特地查看了下手册,关于php  magic quotes,常见的几个设置如下,magic_quotes_gpc,magic_quotes_sybase,magic_quote_runtime,这几个函数是在php.ini中去配置的,从手册中可以看出从php5.3后已经废除了这些特性,所以强烈大家不要使用,在php.ini中关闭它。

深入PHP magic quotes的详解

这些函数的作用是对数据进行转义。防止sql注入的时候,很多人会这样写:

if(!get_magic_quotes_gpc()){
$post=addslashes($post);
}

如果开启了它们,会自动给你转义单引号(')、双引号(")、反斜线(\)与 NUL(null字符),其实就相当于调用addslashes函数。你可能会说这样不是很好嘛,安全性更高了,但是,你考虑代码移植性了吗?另外,对于上所有gpc($_GET,$_POST,$_COOKIE)的数据你都进行转义是否有必要?开销有多大?下面PHP点点通(phpddt.com)就对手册中关于Magic Quotes的详细说明:

1.magic_quotes_gpc

magic_quotes_gpc这个是用来设置GPC($_GET、$_POST、$_COOKIE)的魔术引用状态(在PHP4中也包含$_ENV)。当开启时,所有的单引号(single-quote),双引号(double quote),反斜线(backslash)和NUL's会被反斜线自动转义。当开启magic_quote_sybase为on时,只有单引号(singgle-quote)会被单引号转义为'',双引号、反斜线(backslash)和NUL's不受影响不会被转义。

深入PHP magic quotes的详解

2.magic_quote_runtime

magic_quote_runtime如果开启该选项,许多返回外部数据(数据库、文本)的函数将会被反斜线(backslash)转义。如果也开启magic_quote_sybase,则只有单引号(single-quote)会被单引号转义。

深入PHP magic quotes的详解

3.magic_quotes_sybase

magic_quotes_sybase如果设置此选项开启、在magic_quotes_gpc,magic_quotes_runtime开启的情况下单引号‘会被单引号'转移而不是被反斜线\转义。同时、此设置会完全覆盖magic_quotes_gpc的设置,即使magic_quotes_gpc被设置为on,双引号“、反斜线\和NUL's也不会被转义。

深入PHP magic quotes的详解

PHP 相关文章推荐
PHP5中使用DOM控制XML实现代码
May 07 PHP
Smarty中常用变量操作符汇总
Oct 27 PHP
纯PHP代码实现支付宝批量付款
Dec 24 PHP
php实现无限级分类查询(递归、非递归)
Mar 10 PHP
yii2使用ajax返回json的实现方法
May 14 PHP
PHP打印输出函数汇总
Aug 28 PHP
php Session无效分析资料整理
Nov 29 PHP
php判断是否为ajax请求的方法
Nov 29 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
Jan 13 PHP
PHP封装函数实现生成随机的字符串验证码
Jan 24 PHP
php7 图形用户界面GUI 开发示例
Feb 22 PHP
PHP isset()及empty()用法区别详解
Aug 29 PHP
php错误级别的设置方法
Jun 17 #PHP
PHP大小写问题:函数名和类名不区分,变量名区分
Jun 17 #PHP
修改php.ini以达到屏蔽错误信息并记录日志
Jun 16 #PHP
php fsockopen伪造post与get方法的详解
Jun 14 #PHP
探讨:parse url解析URL,返回其组成部分
Jun 14 #PHP
PHP可变函数的使用详解
Jun 14 #PHP
VIM中设置php自动缩进为4个空格的方法详解
Jun 14 #PHP
You might like
3
2006/10/09 PHP
php缓存技术详细总结
2013/08/07 PHP
php array_key_exists() 与 isset() 的区别
2016/10/24 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
js DOM模型操作
2009/12/28 Javascript
让你的博文自动带上缩址的实现代码,方便发到微博客上
2010/12/28 Javascript
Javascript根据指定下标或对象删除数组元素
2012/12/21 Javascript
JavaScript实现网页上的浮动广告的简单方法
2013/06/14 Javascript
一个CSS+jQuery实现的放大缩小动画效果
2014/02/19 Javascript
jQuery中width()方法用法实例
2014/12/24 Javascript
jQuery中:animated选择器用法实例
2014/12/29 Javascript
JavaScript性能优化之小知识总结
2015/11/20 Javascript
浅谈js中的延迟执行和定时执行
2016/05/31 Javascript
BootStrap中按钮点击后被禁用按钮的最佳实现方法
2016/09/23 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
JS实现的贪吃蛇游戏完整实例
2019/01/18 Javascript
详解项目升级到vue-cli3的正确姿势
2019/01/28 Javascript
layui form.render('select', 'test2') 更新渲染的方法
2019/09/27 Javascript
python中mechanize库的简单使用示例
2014/01/10 Python
python中__call__方法示例分析
2014/10/11 Python
python 数据清洗之数据合并、转换、过滤、排序
2017/02/12 Python
Python存取XML的常见方法实例分析
2017/03/21 Python
Python基于回溯法子集树模板解决找零问题示例
2017/09/11 Python
Python格式化输出%s和%d
2018/05/07 Python
python sys.argv[]用法实例详解
2018/05/25 Python
python+PyQT实现系统桌面时钟
2020/06/16 Python
从0开始的Python学习016异常
2019/04/08 Python
用python实现名片管理系统
2020/06/18 Python
浅谈css3新单位vw、vh、vmin、vmax的使用详解
2017/12/01 HTML / CSS
浅谈html5 video 移动端填坑记
2018/01/15 HTML / CSS
存储过程的优缺点是什么
2015/01/10 面试题
护理学专业推荐信
2013/12/03 职场文书
毕业生简历自我评价范文
2014/04/09 职场文书
专题组织生活会方案
2014/06/15 职场文书
2014年项目工作总结
2014/11/24 职场文书
Spring Boot 底层原理基础深度解析
2022/04/03 Java/Android