本篇文章是对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不受影响不会被转义。
2.magic_quote_runtime
magic_quote_runtime如果开启该选项,许多返回外部数据(数据库、文本)的函数将会被反斜线(backslash)转义。如果也开启magic_quote_sybase,则只有单引号(single-quote)会被单引号转义。
3.magic_quotes_sybase
magic_quotes_sybase如果设置此选项开启、在magic_quotes_gpc,magic_quotes_runtime开启的情况下单引号‘会被单引号'转移而不是被反斜线\转义。同时、此设置会完全覆盖magic_quotes_gpc的设置,即使magic_quotes_gpc被设置为on,双引号“、反斜线\和NUL's也不会被转义。
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn