PHP安全之以Apache模式安裝時(shí)可能遇到的攻擊及解決辦法
當(dāng) PHP 以 Apache 模塊方式安裝時(shí),它將繼承 Apache 用戶(通常為“nobody”)的權(quán)限。這對(duì)安全和認(rèn)證有一些影響。比如,如果用 PHP 來(lái)訪問(wèn)數(shù)據(jù)庫(kù),除非數(shù)據(jù)庫(kù)有自己的訪問(wèn)控制,否則就要使“nobody”用戶可以訪問(wèn)數(shù)據(jù)庫(kù)。這意味著惡意的腳本在不用提供用戶名和密碼時(shí)就可能訪問(wèn)和修改數(shù)據(jù)庫(kù)。一個(gè) web Spider 也完全有可能偶然發(fā)現(xiàn)數(shù)據(jù)庫(kù)的管理頁(yè)面,并且刪除所有的數(shù)據(jù)庫(kù)。可以通過(guò) Apache 認(rèn)證來(lái)避免此問(wèn)題,或者用 LDAP、.htaccess 等技術(shù)來(lái)設(shè)計(jì)自己的訪問(wèn)模型,并把這些代碼作為 PHP 腳本的一部分。
通常,一但安全性達(dá)到可以使 PHP 用戶(這里也就是 Apache 用戶)承擔(dān)的風(fēng)險(xiǎn)極小的程度時(shí)候,可能 PHP 已經(jīng)到了阻止向用戶目錄寫入任何文件或禁止訪問(wèn)和修改數(shù)據(jù)庫(kù)的地步了。這就是說(shuō),無(wú)論是正常的文件還是非正常的文件,無(wú)論是正常的數(shù)據(jù)庫(kù)事務(wù)來(lái)是惡意的請(qǐng)求,都會(huì)被拒之門外。
一個(gè)常犯的對(duì)安全性不利的錯(cuò)誤就是讓 Apache 擁有 root 權(quán)限,或者通過(guò)其它途徑斌予 Apache 更強(qiáng)大的功能。
把 Apache 用戶的權(quán)限提升為 root 是極度危險(xiǎn)的做法,而且可能會(huì)危及到整個(gè)系統(tǒng)的安全。所以除非是安全專家,否則決不要考慮使用 su,chroot 或者以 root 權(quán)限運(yùn)行。
除此之外還有一些比較簡(jiǎn)單的解決方案。比如說(shuō)可以使用?open_basedir?來(lái)限制哪些目錄可以被 PHP 使用。也可以設(shè)置 Apache 的專屬區(qū)域,從而把所有的 web 活動(dòng)都限制到非用戶和非系統(tǒng)文件之中。
相關(guān)文章:
1. python 實(shí)現(xiàn)圖片修復(fù)(可用于去水印)2. Android自定義控件實(shí)現(xiàn)方向盤效果3. asp讀取xml文件和記數(shù)4. 低版本IE正常運(yùn)行HTML5+CSS3網(wǎng)站的3種解決方案5. XHTML 1.0:標(biāo)記新的開(kāi)端6. Java 生成帶Logo和文字的二維碼7. xml中的空格之完全解說(shuō)8. python中的socket實(shí)現(xiàn)ftp客戶端和服務(wù)器收發(fā)文件及md5加密文件9. 怎樣才能用js生成xmldom對(duì)象,并且在firefox中也實(shí)現(xiàn)xml數(shù)據(jù)島?10. 基于javaweb+jsp實(shí)現(xiàn)企業(yè)財(cái)務(wù)記賬管理系統(tǒng)
