减少Tomcat错误页面中的信息泄露

And*_*yle 12 error-handling tomcat web-config

默认情况下,Tomcat的错误页面会显示Tomcat的存在以及处理请求的容器的确切版本.这对于开发很有用,但在生产环境中,这些信息是一个潜在的安全漏洞,禁用它会很不错.

因此,我想知道最好的(如最直接/最全面的)解决方案是完全抑制Tomcat的默认错误页面.我知道<error-page>web.xml 中的选项,但它似乎在两个所需的计数上都失败了,部分是因为我必须多次列出相同的备用错误页面(每个响应代码我想要处理一个),并且因为这个打击我可能不是100%健壮; 如果攻击者能够以某种方式获得我没有明确列出的错误代码,他们将获得默认的错误页面.

理想情况下,设置通用自定义错误页面或者在默认错误页面中禁用发送任何HTML以及错误代码的简单选项将是最佳选择.如果这些选项都不可能,我有兴趣了解实现此功能的典型方法是什么(讨论/显示为什么不存在这些假设选项的奖励点,因为看起来我的要求是非常标准的对于在生产中使用Tomcat的任何人......).

Jer*_*ein 6

<error-page>是正确的答案,但您不希望仅将所有错误代码重定向到某些通用消息.您必须考虑如何处理每个错误.如果您担心可能会错过其中一个代码,请查看HttpServletResponse界面中的常量.


Val*_*tin 5

最简单,最全面的方法是使用ErrorReportValve-只需将以下行添加到server.xml的Host部分(您应该已经在其中拥有AccessLogValve:

<Valve className="org.apache.catalina.valves.ErrorReportValve"
    showReport="false" 
    showServerInfo="false"/>    
Run Code Online (Sandbox Code Playgroud)

这样,您可以隐藏服务器信息,并且(由于可选的showReport = false)还可以跟踪堆栈。

您可以在“ 安全方法”和“ 错误报告阀”的文档中阅读有关此内容的更多信息。