深入PHP magic quotes的详解

yipeiwu_com5年前PHP代码库

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

php.ini中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不受影响不会被转义。

magic_quotes_gpc教程

2.magic_quote_runtime

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

magic_quote_runtime教程

3.magic_quotes_sybase

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

magic_quotes_sybase教程

相关文章

使用PHP socke 向指定页面提交数据

在jquery里用 load post 等等,无法得到我想要的结果!于是突然-----这几天想的东西都白想了,现在只好这样了 现在想在php里面向指定的页面...

php线性表的入栈与出栈实例分析

本文实例讲述了php线性表的入栈与出栈用法。分享给大家供大家参考。具体如下: <?php $stack = array("Simon", "Elaine"); //定...

php中将地址生成迅雷快车旋风链接的代码[测试通过]

在线演示地址:http://tools.jb51.net/tools/cs.php复制代码 代码如下:<?php function zhuanhuan() { $urlodd=ex...

PHP session会话的安全性分析

PHP session会话的安全性分析

从而达到方便快捷的目的,但是它在存储信息的时候往往会有一些敏感的东西,这些东西可能成为被攻击的目标,如银行的账号、信用卡事务或档案记录等。这就要求在编写代码的时候必须采取安全措施来减少攻...

PHP中开启gzip压缩的2种方法

网页开启gzip压缩以后,其体积可以减小20%~90%,可以节省下大量的带宽,从而减少页面响应时间,提高用户体验。 php配置改法: 复制代码 代码如下: zlib.output_com...