关于magic_quotes魔法字符串
我记得以前的Discuz是需要magic_qutoes_gpc = on和magic_quotes = on的,不知道现在还需要不需要,关于这个设置,我自己有我自己的一些想法。
get_magic_quotes = on的时候,$_GET,$_POST,$_REQUEST还有cookie中的变量会自动进行转义,相当于自动执行addslashes()。这么一来,方便和不方便的问题就一起来了。
好处:
1、$_GET,$_POST,$_REQUEST的变量值可以直接使用,例如,可以很方便生成SQL语句去查询。
2、可以在一定程度上避免利用地址栏的SQL注入
问题:
3、如果数据不是来源于$_GET,$_POST,$_REQUEST,以为有magic_quotes而不加转义,就会出错
我举个例子说一下
1例如,你可以直接用Select * from aaa where name = '$var'的语句使用传递过来的参数,这个很简单,大家都能明白,当name有引号斜杠之类的就不用多出理一次了
2例如,在magic_quotes=off的情况下地址栏输入:
viewthread.php?tid=xxx';inseart into cdb_users ……;
或者xxxx.php?tid=xxx';drop table xxx;
执行到SQL的时候,where tid = '$var'就变成了
where tid = 'xxx' ; inseart into cdb_users …… ;
where tid = 'xxx' ; drop table xxx ;
看,没有这个自动的转义,就被别人乘虚而入了吧,呵呵
[ 本帖最后由 renart 于 2006-7-11 04:26 PM 编辑 ]