magic_quotes_gpc和safe_mode

去官方看了下,用紅色的block特別註明了,php5.3已經不推薦使用這個東東了,在 PHP6 中已經將其廢棄:php

magic_quotes_gpc boolean
Warning
This feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 6.0.0. Relying on this feature is highly discouraged.
magic_quotes_gpc=on 的配置下,插入數據時,Magic quotes 會自動將數據轉義。 能夠從必定程度上,讓初學者帶離腳本的安全風險。例如在沒有任何保護措施的代碼下,開啓了 Magic quotes 後會少不少的風險,例如注入問題。之前看一些安全方面的文章,入侵者老是喜歡選擇magic_quotes_gpc=off的站下手,若是看到其magic_quotes_gpc=on ,估計就不會弄這個站了。
那麼官方爲何要廢除這個東東呢?搜索了一下,看到一個寫得至關詳細和全面的帖子,下面將其中提到的幾個緣由帖出:

爲何不使用 Magic quotes安全

可移植性
不管此功能是否開啓,它都會影響腳本的可移植性,由於它影響咱們後續過濾數據的操做。函數

性能問題
在獲取全部的外部數據以前都會被轉義,這無疑會增長運行時的花銷(並且並非全部的數據都須要轉義)。性能

形成困惑
正如上述所言,並不是全部的數據都須要被轉義。有可能出現的一種狀況,就是當你爲了獲取未被轉義的數據,而「瘋狂的」使用 stripslashes 函數。this

如何禁用 magic_quotes_gpc 和safe_mode 

1,用 php.ini 配置文件全局禁用code

magic_quotes_gpc = Off
safe_mode = Off

2,使用 .htaccess 文件禁用(對於虛擬主機)ip

php_flag magic_quotes_gpc Off

php_flag safe_mode Offclass

禁用了這兩個東東後,安全問題就更加不能忽視了。在數據入庫前必定要addslashes ,出庫後要記得stripslashes 。
相關文章
相關標籤/搜索