PHP安全-源碼暴露
關于包含的一個重要問題是源代碼的暴露。產(chǎn)生這個問題主要原因是下面的常見情況:
l對包含文件使用.inc的擴展名
l包含文件保存在網(wǎng)站主目錄下
lApache未設定.inc文件的類型
lApache的默認文件類型是text/plain
上面情況造成了可以通過URL直接訪問包含文件。更糟的是,它們會被作為普通文本處理而不會被PHP所解析,這樣你的源代碼就會顯示在用戶的瀏覽器上(見圖5-1)。
圖 5-1. 源代碼在服務器中的暴露
避免這種情況很容易。只能重組你的應用,把所有的包含文件放在網(wǎng)站主目錄之外就可以了,最好的方法是只把需要公開發(fā)布的文件放置在網(wǎng)站主目錄下。
雖然這聽起來有些瘋狂,很多情形下能導致源碼的暴露。我曾經(jīng)看到過Apache的配置文件被誤寫(并且在下次啟動前未發(fā)現(xiàn)),沒有經(jīng)驗的系統(tǒng)管理員升級了Apache但忘了加入PHP支持,還有一大堆情形能導致源碼暴露。
通過在網(wǎng)站主目錄外保存盡可能多的PHP代碼,你可以防止源代碼的暴露。至少,把所有的包含文件保存在網(wǎng)站主目錄外是一個最好的辦法。
一些方法能限制源碼暴露的可能性但不能從根本上解決這個問題。這些方法包括在Apache中配置.inc文件與PHP文件一樣處理,包含文件使用.php后綴,配置Apache不能接受對.inc文件的直接請求:
<Files ~ '.inc$'>
Order allow,deny
Deny from all
</Files>
雖然這些方法有其優(yōu)點,但沒有一個方法在安全性上能與把包含文件放在網(wǎng)站主目錄之外的做法相比。不要依賴于上面的方法對你的應用進行保護,至多把它們當做深度防范來對待。
相關文章:
1. 圖文詳解vue中proto文件的函數(shù)調(diào)用2. Android如何加載Base64編碼格式圖片3. 基于android studio的layout的xml文件的創(chuàng)建方式4. 解決Android studio xml界面無法預覽問題5. 詳解Android studio 動態(tài)fragment的用法6. 什么是python的自省7. Spring Boot和Thymeleaf整合結合JPA實現(xiàn)分頁效果(實例代碼)8. Vuex localStorage的具體使用9. 使用Android studio查看Kotlin的字節(jié)碼教程10. Vue封裝一個TodoList的案例與瀏覽器本地緩存的應用實現(xiàn)

網(wǎng)公網(wǎng)安備