深入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开发中的错误收集,不定期更新。
Feb 03 PHP
PHP读取xml方法介绍
Jan 12 PHP
使用session判断用户登录用户权限(超简单)
Jun 08 PHP
php 发送带附件邮件示例
Jan 23 PHP
php数组比较实现查找连续数的方法
Jul 29 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
Jun 28 PHP
Laravel框架实现redis集群的方法分析
Sep 14 PHP
Laravel学习教程之model validation的使用示例
Oct 23 PHP
PHP实现的mongoDB数据库操作类完整实例
Apr 10 PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
Apr 10 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
Feb 27 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方法调用模式与函数调用模式简例
2011/09/20 PHP
php获取json数据所有的节点路径
2015/05/17 PHP
浅谈PHP中foreach/in_array的使用
2015/11/02 PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
2016/07/01 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
2020/04/06 PHP
JQuery 动态扩展对象之另类视角
2010/05/25 Javascript
一个js控制的导航菜单实例代码
2013/12/03 Javascript
node.js中的fs.lchmodSync方法使用说明
2014/12/16 Javascript
jquery 将当前时间转换成yyyymmdd格式的实现方法
2016/06/01 Javascript
最佳的JavaScript错误处理实践
2016/07/16 Javascript
AngularJS表单验证中级篇(3)
2016/09/28 Javascript
JS无缝滚动效果实现方法分析
2016/12/21 Javascript
JS实现密码框的显示密码和隐藏密码功能示例
2016/12/26 Javascript
JS实现移动端按首字母检索城市列表附源码下载
2017/07/05 Javascript
vue router动态路由下让每个子路由都是独立组件的解决方案
2018/04/24 Javascript
在微信小程序里使用watch和computed的方法
2018/08/02 Javascript
Angular项目如何升级至Angular6步骤全纪录
2018/09/03 Javascript
Nuxt升级2.0.0时出现的问题(小结)
2018/10/08 Javascript
写gulp遇到的ES6问题详解
2018/12/03 Javascript
React+Antd+Redux实现待办事件的方法
2019/03/14 Javascript
详解关于webpack多入口热加载很慢的原因
2019/04/24 Javascript
vue 页面跳转的实现方式
2021/01/12 Vue.js
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
浅谈Python中的数据类型
2015/05/05 Python
Python2实现的LED大数字显示效果示例
2017/09/04 Python
Python3多进程 multiprocessing 模块实例详解
2018/06/11 Python
selenium处理元素定位点击无效问题
2019/06/12 Python
python 爬虫百度地图的信息界面的实现方法
2019/10/27 Python
Python实现投影法分割图像示例(二)
2020/01/17 Python
Python爬虫JSON及JSONPath运行原理详解
2020/06/04 Python
pytorch Dataset,DataLoader产生自定义的训练数据案例
2021/03/03 Python
KLOOK客路:发现更好玩的世界,预订独一无二的旅行体验
2016/12/16 全球购物
维氏瑞士军刀英国网站:Victorinox英国
2019/07/04 全球购物
2015年学生会工作总结范文
2015/03/31 职场文书
使用Python脚本对GiteePages进行一键部署的使用说明
2021/05/27 Python