background image

PHP

基础 PHP magic quotes 说明

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

这些函数的作用是对数据进行转义。防止 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 不受影响不
会被转义。