深入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 相关文章推荐
PHP的面向对象编程
Oct 09 PHP
PHP print类函数使用总结
Jun 25 PHP
Php图像处理类代码分享
Jan 19 PHP
PHP判断指定时间段的2个方法
Mar 14 PHP
PHP制作万年历
Jan 07 PHP
PHP 搜索查询功能实现
Nov 29 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
Jun 15 PHP
PHP实现的链式队列结构示例
Sep 15 PHP
PHP7扩展开发之hello word实现方法详解
Jan 15 PHP
PHP 二维array转换json的实例讲解
Aug 21 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
Jan 23 PHP
Laravel相关的一些故障解决
Aug 19 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
php REMOTE_ADDR之获取访客IP的代码
2008/04/22 PHP
C/S和B/S两种架构区别与优缺点分析
2014/10/23 PHP
php版阿里大于(阿里大鱼)短信发送实例详解
2016/11/30 PHP
2017年最好用的9个php开发工具推荐(超好用)
2017/10/23 PHP
Django中通过定时任务触发页面静态化的处理方式
2018/08/29 PHP
PHP文件后缀不强制为.php方法
2019/03/31 PHP
B/S开发中常用javaScript技术与代码
2007/03/09 Javascript
Array.prototype.slice 使用扩展
2010/06/09 Javascript
JSON 和 JavaScript eval使用说明
2010/06/13 Javascript
IE浏览器不支持getElementsByClassName的解决方法
2014/08/27 Javascript
谈谈JavaScript类型系统之Math
2016/01/06 Javascript
JQuery validate插件验证用户注册信息
2016/05/11 Javascript
jQuery Mobile操作HTML5的常用函数总结
2016/05/17 Javascript
jQuery简单实现上下,左右滑动的方法
2016/06/01 Javascript
jquery实现刷新随机变化样式特效(tag标签样式)
2017/02/03 Javascript
Vue中组件之间数据的传递的示例代码
2017/09/08 Javascript
js实现数组内数据的上移和下移的实例
2017/11/14 Javascript
layui table设置某一行的字体颜色方法
2019/09/05 Javascript
Element Notification通知的实现示例
2020/07/27 Javascript
python判断字符串编码的简单实现方法(使用chardet)
2016/07/01 Python
利用Python抓取行政区划码的方法
2016/11/28 Python
使用tensorflow实现AlexNet
2017/11/20 Python
django项目搭建与Session使用详解
2018/10/10 Python
Python静态类型检查新工具之pyright 使用指南
2019/04/26 Python
Python类中方法getitem和getattr详解
2019/08/30 Python
python os.path.isfile 的使用误区详解
2019/11/29 Python
Python函数生成器原理及使用详解
2020/03/12 Python
国外平面设计第一市场:99designs
2016/10/25 全球购物
ROSEFIELD手表荷兰官方网上商店:北欧极简设计女士腕表品牌
2018/01/24 全球购物
比较基础的php面试题及答案-编程题
2012/10/14 面试题
学前教育专业求职信
2014/09/02 职场文书
高中课前三分钟演讲稿
2014/09/13 职场文书
我的职业生涯规划:打造自己的运动帝国
2014/09/18 职场文书
学校总务处领导干部个人对照检查材料思想汇报
2014/10/06 职场文书
2015年招聘工作总结
2014/12/12 职场文书
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL