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

时间:2013-04-19 06:00:44

标签: php magic-quotes

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

来自PHP文档

性能

  

性能因为并非每个转义数据都插入到数据库中,所以逃避所有这些数据会导致性能下降。在运行时简单地调用转义函数(例如 addslashes())会更有效。尽管php.ini-development默认启用这些指令,但php.ini-production会禁用它。此建议主要是出于性能原因。

还有其他原因导致Magic Quotes从PHP中删除了吗?

1 个答案:

答案 0 :(得分:6)

这很清楚地解释了为什么chao

中的手册已弃用
  

引用chao

的评论      

魔术引号被弃用的原因是逃避/引用的一刀切方法是错误的并且非常危险。不同类型的内容具有不同的特殊字符和不同的方式来逃避它们,并且在一个中起作用的往往在其他地方具有副作用。任何样本代码,无论是在这里还是其他任何地方,假装像魔术引号一样工作 - 或者对HTML,SQL或其他任何事情进行类似的转换 - 同样是错误的并且同样危险。

     

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

也很好读Wikipedia : Magic quotes Criticism