PHP安全-源碼暴露
關于包含的一個重要問題是源代碼的暴露。產生這個問題主要原因是下面的常見情況:
l對包含文件使用.inc的擴展名
l包含文件保存在網站主目錄下
lApache未設定.inc文件的類型
lApache的默認文件類型是text/plain
上面情況造成了可以通過URL直接訪問包含文件。更糟的是,它們會被作為普通文本處理而不會被PHP所解析,這樣你的源代碼就會顯示在用戶的瀏覽器上(見圖5-1)。
圖 5-1. 源代碼在服務器中的暴露
避免這種情況很容易。只能重組你的應用,把所有的包含文件放在網站主目錄之外就可以了,最好的方法是只把需要公開發布的文件放置在網站主目錄下。
雖然這聽起來有些瘋狂,很多情形下能導致源碼的暴露。我曾經看到過Apache的配置文件被誤寫(并且在下次啟動前未發現),沒有經驗的系統管理員升級了Apache但忘了加入PHP支持,還有一大堆情形能導致源碼暴露。
通過在網站主目錄外保存盡可能多的PHP代碼,你可以防止源代碼的暴露。至少,把所有的包含文件保存在網站主目錄外是一個最好的辦法。
一些方法能限制源碼暴露的可能性但不能從根本上解決這個問題。這些方法包括在Apache中配置.inc文件與PHP文件一樣處理,包含文件使用.php后綴,配置Apache不能接受對.inc文件的直接請求:
<Files ~ '.inc$'>
Order allow,deny
Deny from all
</Files>
雖然這些方法有其優點,但沒有一個方法在安全性上能與把包含文件放在網站主目錄之外的做法相比。不要依賴于上面的方法對你的應用進行保護,至多把它們當做深度防范來對待。
相關文章: