achilles1985 发表于 2009-3-19 05:14:33

请解释下get_magic_quotes_gpc()

为什么说去掉了单引号原有的功能之后 就可以减少php脚本的安全隐患

在实际操作中如果我们不打开魔术引用会遇到除安全问题之外的问题吗?比如无法执行某些语句

kider 发表于 2009-3-19 10:02:40

你的问题,是不是跟这个道理一样呀:不用保安为什么就不安全了...

参考:
为什么要用魔术引号
[*]对初学者很有用
魔术引号在 PHP 中用来实现避免初学者的代码更危险。尽管 SQL 注入 在魔术引号打开的情况下仍然有可能实现,但起码系统的风险减少很多了。[*]方便使用
当向数据库中插入数据时,魔术引号所做的就是自动对所有的 GET、POST、COOKIE 数据运用 addslashes() 函数。

为什么不用魔术引号
[*]可移植性
编程时认为其打开或并闭都会影响到移植性。可以用 get_magic_quotes_gpc() 来检查是否打开,并据此编程。[*]性能
由于并不是每一段被转义的数据都要插入数据库的,如果所有进入 PHP 的数据都被转义的话,那么会对程序的执行效率产生一定的影响。在运行时调用转义函数(如 addslashes() )更有效率。
尽管 php.ini-dist 默认打开了这个选项,但是 php.ini-recommended 默认却关闭了它,主要是出于性能的考虑。[*]不便
由于不是所有数据都需要转义,在不需要转义的地方看到转义的数据就很烦。比如说通过表单发送邮件,结果看到一大堆的 \'。针对这个问题,可以使用 stripslashes() 函数处理。
页: [1]
查看完整版本: 请解释下get_magic_quotes_gpc()