magic_quotes_gpc
我们都讨厌它,很多服务器仍然使用这个设置,而且有足够的知情,一些提供会认为它更安全,但我必须不同意。
我的问题是,需要反斜杠的是什么? 我想完全删除它们,但我不确定它们是否需要?
修改的
然后是SQL注入。
答案 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
。