magic_quotes_gpc
反斜槓的意義?
我們都討厭它,許多服務器仍然可以使用這個設置,明知足夠提供一些會說這是安全的,但我不同意必須。
我現在的問題是,需要什麼反斜槓? 我想完全刪除它們,但我不確定它們是否需要?
編輯
其他然後SQL注入。
magic_quotes_gpc
反斜槓的意義?
我們都討厭它,許多服務器仍然可以使用這個設置,明知足夠提供一些會說這是安全的,但我不同意必須。
我現在的問題是,需要什麼反斜槓? 我想完全刪除它們,但我不確定它們是否需要?
編輯
其他然後SQL注入。
magic_quotes_gpc()是基於錯誤的概念提供的,即從任何外部源提交給PHP的所有數據都會立即插入到數據庫中。如果您想將數據發送到數據庫以外的其他位置,則必須刪除PHP剛剛插入的斜槓,使所需的工作翻一番。
而且,並非所有數據庫都使用斜槓來轉義元字符。 \'
在MySQL中很好,但在MS Access中,轉義單引號實際上是''
--所以不僅PHP在做不必要的工作,在很多情況下,它都是在做錯誤的工作。
然後,最重要的是,addslashes(這基本上是magic_quotes_gpc()在內部調用的)無法處理所有形式的SQL注入攻擊,尤其是在使用Unicode的情況下。 addslashes是str_replace("'", "\\'", $string)
的一種優化形式,它在ASCII級別工作 - 大量的Unicode序列可能看起來像普通的ascii,但在簡單的addslashes()
已經造成嚴重破壞後變成SQL元字符。
它們是爲了防止SQL injection漏洞攻擊,一個非常嚴重的問題,你應該閱讀,如果你要編寫的網絡。
您應該查看準備好的查詢,這是避免SQL注入的更好方法。
沒有理由在PHP中擁有此功能。
這就是爲什麼它被正式棄用並且不會在將來的版本中存在。
如果有足夠的理由保留它,開發者社區會這樣做。
它們旨在讓我們做額外的工作來消除它們。例如,some code in Dokuwiki。
也不要忘了magic_quotes_runtime
。
我已經準備好了可以安全處理的查詢,但是添加了斜槓,我根本不需要添加這些查詢。 – blanknamefornow 2011-02-09 21:05:09
然後繼續並禁用它們。 – ceejayoz 2011-02-10 02:29:06