4

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

来自 PHP 文档

表现

性能 因为不是每条转义数据都插入到数据库中,所以转义所有这些数据会造成性能损失。简单地在运行时调用转义函数(如addlashes())更有效。虽然 php.ini-development 默认启用这些指令,但 php.ini-production 禁用它。这个建议主要是出于性能方面的原因。

是否有任何其他原因Magic Quotes从 PHP 中删除?

4

1 回答 1

6

这很好地解释了为什么在手册中不推荐使用chao

引用chao的评论

不推荐使用魔术引号的原因是,一种千篇一律的转义/引用方法是错误的,而且非常危险。不同类型的内容具有不同的特殊字符和不同的转义方式,并且在一个内容中起作用的内容往往会在其他地方产生副作用。任何示例代码,在这里或其他任何地方,假装像魔术引号一样工作——或者对 HTML、SQL 或其他任何东西进行类似的转换——同样是错误的,同样是危险的。

魔术引号不是为了安全。他们从来没有。这是一件很方便的事情——它们的存在使得 PHP 新手可以摸索并最终编写一些有点工作的 mysql 查询,而无需了解如何正确转义/引用数据。他们防止一些意外的语法错误,就像他们的工作一样。但它们不会阻止恶意和半知识的攻击者破坏 PHP noob 的数据库。而那个可怜的菜鸟甚至可能永远不知道他的数据库现在是如何消失或为什么消失了,因为魔术引号(或他那漂亮的“我要逃避一切”功能)给了他一种虚假的安全感。他不必学习如何真正处理不受信任的输入。

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

于 2013-04-19T06:04:05.703 回答