反斜杠的意义?

时间:2011-02-09 20:56:20

标签: php

magic_quotes_gpc

我们都讨厌它,很多服务器仍然使用这个设置,而且有足够的知情,一些提供会认为它更安全,但我必须不同意。

我的问题是,需要反斜杠的是什么? 我想完全删除它们,但我不确定它们是否需要?

修改

然后是SQL注入。

4 个答案:

答案 0 :(得分:2)

magic_quotes_gpc()是基于误导的概念提供的,即从任何外部源提交给PHP的所有数据都将立即插入到数据库中。如果您想将数据发送到除数据库之外的某个地方,则必须删除PHP刚刚插入的斜杠,使所需的工作量增加一倍。

同样,并非所有数据库都使用斜杠来转义元字符。 \'在MySQL中很好,但在MS Access中,转义单引号实际上是'' - 所以不仅PHP做了不必要的工作,在很多情况下,它开始工作错误。

然后,除此之外,addslashes(这基本上是magic_quotes_gpc()在内部调用的)无法处理所有形式的SQL注入攻击,特别是在使用Unicode的情况下。 addslashes是str_replace("'", "\\'", $string)的一种美化形式,它在ASCII级别工作 - 大量的Unicode序列看起来像常规的ascii,但在简单的addslashes()造成了破坏之后变成了SQL元字符。

答案 1 :(得分:1)

它们用于防止SQL injection漏洞攻击,如果您要编写网络代码,则应该阅读这个非常严重的问题。

您应该查看准备好的查询,这是避免SQL注入的更好方法。

答案 2 :(得分:1)

没有充分的理由在PHP中使用此功能。

这就是它正式弃用的原因,并且在将来的版本中不会存在。

如果有充分的理由保留它,开发者社区就会这样做。

答案 3 :(得分:0)

它们旨在让我们做额外的工作来删除它们。例如,some code in Dokuwiki

也不要忘记magic_quotes_runtime