深入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 相关文章推荐
怎么使 Mysql 数据同步
Oct 09 PHP
如何使用脚本模仿登陆过程
Nov 22 PHP
rephactor 优秀的PHP的重构工具
Jun 09 PHP
解析将多维数组转换为支持curl提交的一维数组格式
Jul 08 PHP
PHP 动态生成静态HTML页面示例代码
Jan 15 PHP
PHP获取数组最后一个值的2种方法
Jan 21 PHP
再推荐十款免费的php开发工具
Nov 09 PHP
ZF框架实现发送邮件的方法
Dec 03 PHP
修改WordPress中文章编辑器的样式的方法详解
Dec 15 PHP
Yii2创建控制器(createController)方法详解
Jul 23 PHP
php session的应用详细介绍
Mar 22 PHP
php实现微信企业号支付个人的方法详解
Jul 26 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
五款常用mysql slow log分析工具的比较分析
2011/05/22 PHP
PHP应用跨时区功能的实现方法
2019/03/21 PHP
javascript数组组合成字符串的脚本
2021/01/06 Javascript
setTimeout 不断吐食CPU的问题分析
2009/04/01 Javascript
JQuery+Ajax无刷新分页的实例代码
2014/02/08 Javascript
js replace替换所有匹配的字符串
2014/02/13 Javascript
javascript显式类型转换实例分析
2015/04/25 Javascript
jQuery寻找n以内完全数的方法
2015/06/24 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
2015/07/31 Javascript
js小数运算出现多位小数如何解决
2015/10/08 Javascript
JavaScript动态设置div的样式的方法
2015/12/26 Javascript
JavaScript prototype属性详解
2016/10/25 Javascript
js模拟微博发布消息
2017/02/23 Javascript
Javascript的this详解
2019/03/23 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
2019/09/10 Javascript
vue更改数组中的值实例代码详解
2020/02/07 Javascript
vue实现折线图 可按时间查询
2020/08/21 Javascript
微信小程序入门之绘制时钟
2020/10/22 Javascript
[42:52]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
Python中的__slots__示例详解
2017/07/06 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
2018/04/28 Python
详解Django-auth-ldap 配置方法
2018/12/10 Python
在python中实现强制关闭线程的示例
2019/01/22 Python
Python编写通讯录通过数据库存储实现模糊查询功能
2019/07/18 Python
Idea安装python显示无SDK问题解决方案
2020/08/12 Python
HTML5 Canvas的事件处理介绍
2015/04/24 HTML / CSS
国际旅客访问北美最大的汽车租赁提供商:Alamo Rent A Car
2018/06/13 全球购物
求职简历中个人的自我评价
2013/12/01 职场文书
工厂仓管员岗位职责
2014/01/01 职场文书
保研推荐信
2014/05/09 职场文书
创先争优活动承诺书
2014/08/30 职场文书
工程部岗位职责范本
2015/04/11 职场文书
2019通用版劳动合同范本!
2019/07/11 职场文书
canvas多重阴影发光效果实现
2021/04/20 Javascript
MySQL一些常用高级SQL语句
2021/07/03 MySQL