漏洞說明
當因爲某些疏忽(開發問題等)或者用戶惡意操作導致網頁出現錯誤時,在未進行處理的情況下,瀏覽器往往會直接給出錯誤信息,甚至會詳細到某個文件的某行代碼出現了什麼樣的錯誤,這樣可能會暴露項目的目錄結構,將一些關鍵信息展示給攻擊者。
修復方案
當異常或錯誤出現時,展示統一的錯誤提示頁面error.jsp,避免關鍵信息的顯示。相關的配置可以在web.xml中進行設置:
<!-- 在web.xml中做如下配置:-->
<!-- 通用的異常處理/提示方式,避免錯誤頁面暴露項目結構等重要信息 -->
<!-- 400錯誤 請求無效 -->
<error-page>
<error-code>400</error-code>
<location>/error.jsp</location>
</error-page>
<!-- 404 頁面不存在錯誤 -->
<error-page>
<error-code>404</error-code>
<location>/error.jsp</location>
</error-page>
<!-- 500 服務器內部錯誤 -->
<error-page>
<error-code>500</error-code>
<location>/error.jsp</location>
</error-page>
<!-- java.lang.Exception異常錯誤 -->
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
error.jsp中只包含一個簡單的消息提示框,對於一般用戶而言,僅展示該頁面就可以了。而在進行本地開發中,如果網頁出現錯誤,爲了方便調試,可以將這塊代碼註釋掉,這樣定位問題就很直觀了。