为什么Magic Quotes已从PHP 5.4中删除?

Magic Quotes已从PHP 5.4中删除的技术原因是什么?

从PHP文档

性能

性能因为不是每一个转义数据都被插入到数据库中,转义所有这些数据会导致性能损失。 只需在运行时调用转义函数(如addslashes() )就更有效率。 尽管php.ini-development在默认情况下启用了这些指令,但php.ini-production会禁用它。 这个建议主要是由于性能原因。

Magic Quotes为什么会从PHP中删除?


这很好地解释了为什么chao手册中弃用了

引用chao的评论

魔术引号被弃用的原因在于,一种通用的方式来转义/引用是错误的,并且是非常危险的。 不同类型的内容具有不同的特殊字符和不同的转义方式,而且其中一种方式在其他地方会有副作用。 任何伪装成魔术引号的示例代码,或者对HTML,SQL或其他任何类似的东西进行类似的转换 - 同样是错误的,同样也是危险的。

魔术引号不是为了安全。 他们从来没有。 这是一个方便的东西 - 它们存在,所以PHP noob可以摸索并最终编写一些有用的mysql查询,而无需正确学习转义/引用数据。 它们可以防止一些偶然的语法错误,就像他们的工作一样。 但是他们不会阻止恶意和半知识的攻击者摧毁PHP noob的数据库。 那个可怜的noob可能永远不会知道他的数据库现在怎么样或为什么不在了,因为魔术引号(或者他的漂亮的“我要逃避一切”功能)给了他一种虚假的安全感。 他从不需要学习如何真正处理不可信的输入。

也很好读维基百科:魔术引语批评

链接地址: http://www.djcxy.com/p/4509.html

上一篇: Why Magic Quotes has been removed from PHP 5.4?

下一篇: How to turn off magic quotes on shared hosting?