漏洞说明
当因为某些疏忽(开发问题等)或者用户恶意操作导致网页出现错误时,在未进行处理的情况下,浏览器往往会直接给出错误信息,甚至会详细到某个文件的某行代码出现了什么样的错误,这样可能会暴露项目的目录结构,将一些关键信息展示给攻击者。
修复方案
当异常或错误出现时,展示统一的错误提示页面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中只包含一个简单的消息提示框,对于一般用户而言,仅展示该页面就可以了。而在进行本地开发中,如果网页出现错误,为了方便调试,可以将这块代码注释掉,这样定位问题就很直观了。