2011-02-09 100 views
0

magic_quotes_gpc反斜槓的意義?

我們都討厭它,許多服務器仍然可以使用這個設置,明知足夠提供一些會說這是安全的,但我不同意必須。

我現在的問題是,需要什麼反斜槓? 我想完全刪除它們,但我不確定它們是否需要?

編輯

其他然後SQL注入。

回答

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

它們是爲了防止SQL injection漏洞攻擊,一個非常嚴重的問題,你應該閱讀,如果你要編寫的網絡。

您應該查看準備好的查詢,這是避免SQL注入的更好方法。

+0

我已經準備好了可以安全處理的查詢,但是添加了斜槓,我根本不需要添加這些查詢。 – blanknamefornow 2011-02-09 21:05:09

+0

然後繼續並禁用它們。 – ceejayoz 2011-02-10 02:29:06

1

沒有理由在PHP中擁有此功能。

這就是爲什麼它被正式棄用並且不會在將來的版本中存在。

如果有足夠的理由保留它,開發者社區會這樣做。