前幾天配置PHP5.4的時候發(fā)現(xiàn)PHP新版已經(jīng)在一些安全函數(shù)方面進(jìn)行了增改,從php自身防止一些不必要的漏洞,因此開發(fā)人員在寫代碼時也需要注意版本的兼容。下面講幾個涉及安全方面的函數(shù)進(jìn)行說明。
1、safe_mode
狀態(tài):已刪除
描述:此函數(shù)主要限制系統(tǒng)相關(guān)的文件打開、命令執(zhí)行等函數(shù)(具體影響函數(shù)見參考1)。當(dāng)然現(xiàn)在也有bypasss safe_mode的方法(見參考2),通過com接口來繞過。
解決辦法:可以通過配置php.ini中的disable_functions函數(shù)列表進(jìn)行限制指定函數(shù)。
創(chuàng)新互聯(lián)建站云計算的互聯(lián)網(wǎng)服務(wù)提供商,擁有超過13年的服務(wù)器租用、溫江服務(wù)器托管、云服務(wù)器、網(wǎng)頁空間、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn),已先后獲得國家工業(yè)和信息化部頒發(fā)的互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務(wù)許可證。專業(yè)提供云主機(jī)、網(wǎng)頁空間、空間域名、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
2、magic_quotes_gpc
狀態(tài):已刪除 (magic_quotes_runtime、magic_quotes_sybase 刪除)
描述:此函數(shù)在PHP <= 4.2.3默認(rèn)開,會自動對GPC (Get/Post/Cookie)提交的值中的’, “, 和空格進(jìn)行轉(zhuǎn)義,PHP5.4中g(shù)et_magic_quotes_gpc()默認(rèn)返回false。
解決辦法:基本上還是不受影響,先檢測狀態(tài),然后采用MySQL_real_escape_string進(jìn)行轉(zhuǎn)義處理。
3、register_globals
狀態(tài):已刪除
描述:此函數(shù)雖然從PHP>>4.2開始默認(rèn)由on改為off,但是如果程序員開啟的話會導(dǎo)致變量覆蓋等安全問題,特別是結(jié)合文件包含漏洞等。
解決辦法:可以結(jié)合前面sablog源碼中的函數(shù)進(jìn)行改寫(采用extract函數(shù)).
4、session_register
狀態(tài):已刪除(session_unregister()、session_is_registered 刪除)
描述:采用session認(rèn)證的時候可以用該函數(shù)注冊session變量。
解決辦法:采用$_SESSION數(shù)組進(jìn)行注冊變量。
參考:
http://hi.baidu.com/zhangguanshi/blog/item/0a5bf51771a54e42f3de32d1.html
http://luoq.net/PHP-COM-functions/
http://php.net/releases/5_4_0.php