JAVA年度安全 第二周 WEB.XML中的错误处理
http://www.jtmelton.com/2012/01/10/year-of-security-for-java-week-2-error-handling-in-web-xml/这是什么东西,我为啥要关心?
在OWASP TOP 10中我已经详细讨论了这个话题,你可以这里http://www.jtmelton.com/2010/06/02/the-owasp-top-ten-and-esapi-part-7-information-leakage-and-improper-error-handling/ 找到更详细的信息。在本文中,我只讨论重点内容。
在任何应用中错误、异常处理都是一个重要的、经常被忽略的部分。关于这个话题实际上有很多可以讨论的,但是为了简明扼要,我只介绍J2EE WEB应用中最关键的部分。
实际上,异常处理最需要担心的是你根本不处理异常。如果你的代码或者你使用的第三方库允许向上抛出异常,异常到达应用程序的边界进入web容器之后,如何处理异常就依赖于你所使用的容器/应用服务器的内置规则了。默认情况下通常有一个标准的错误页面来简单的输出异常栈所有的信息。这很明显是一个问题:系统的很多的信息都展现给攻击者了,会导致进一步的攻击。
我应该做什么?
处理这个问题很简单。最基本的建议是至少要处理java.lang.Throwable(捕获任何java的异常/错误),为http 错误码这样的特殊异常提供更多专用的处理方案,最常见的错误码是404和500,下面是可以被用到web.xml中的示例代码片段:
注意:error.jsp页面应该是通用的,提供一些预定的信息,并且这些信息不会泄露任何细节来帮助攻击者鉴别应用的特性。
<error-page>
<error-code>404</error-code>
<location>/error.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/error.jsp</location>
</error-page>
在你的应用中捕获异常后还有其他的需要操作,但是从安全的角度上看,捕获异常和特定的错误已经足够了。
参考
———–
http://software-security.sans.org/blog/2010/08/11/security-misconfigurations-java-webxml-files
http://www.jtmelton.com/2010/06/02/the-owasp-top-ten-and-esapi-part-7-information-leakage-and-improper-error-handling/
作者liu251
补充:综合编程 , 安全编程 ,