在Tomcat中的错误页面降低信息披露(Reducing information disclosur

2019-08-17 06:57发布

默认情况下,Tomcat的错误页面透露的Tomcat都存在着,并且在处理请求的容器的确切版本。 这是发展的不错,但在生产这方面的信息是一个潜在的安全漏洞,这将是很好禁用它。

因此,我想知道什么是最好的(如最简单的/综合)解决方案是完全抑制Tomcat的默认错误页面。 我知道的<error-page>在web.xml选项,但似乎无法在两个期望的数量,部分原因是因为我会列出相同的替代错误页面多次(每个响应代码我想处理),因为这给我的印象可能不是100%的强劲; 如果攻击者能够以某种方式得到一个返回错误代码,我没有明确列出,他们会得到默认的错误页面。

理想情况下,一个简单的选择设定一个统一的自定义错误页,或者平了禁止在默认错误页面的错误代码一起发送的任何HTML,将是最好的。 如果没有这些选项都是可能的,我会很感兴趣的讨论/说明为什么不存在这些假定的选项找出实现这一功能的典型方式是什么(加分,因为它似乎我的要求是相当标准在生产使用Tomcat的人......)。

Answer 1:

<error-page>是正确的答案,但你不希望只是所有的错误代码重定向到一些通用的消息。 你要想想你要如何处理每一个错误。 如果你害怕,你可能会错过代码中的一个,在检查出的常数HttpServletResponse的接口 。



Answer 2:

有些错误是直接由容器发送和您的应用程序不会有机会来对付他们。 例如,当请求不存在的资源,404错误将被发送。 您的应用程序可以做一些事情的唯一方法是声明适当的<error-page>在web.xml条目。

我与杰里米·斯坦同意<error-page>是正确的答案。 毕竟错误代码是不是无限的。

也可以参考讨论这里 ,有关错误是如何与Spring MVC的处理。 我认为,最重要的是处理自己的错误(例外情况是,如果他们不被抓到会导致500内部服务器错误)。



Answer 3:

我同意杰里米·斯坦因,即<错误页>是答案,但我想补充两点:

  1. 你应该把一个<错误页>条目在CATALINA_HOME / conf目录/ web.xml文件中,除了应用程序的web.xml文件,以防黑客试图访问其他网络应用程序的URL,如已安装的默认“经理”,“tomcat的”,“实例”等。

  2. 如果你想保护它(显然)服务器而不是采取这些错误页面的护理一样简单。 此链接有你需要做的事情的清单:

https://www.owasp.org/index.php/Securing_tomcat



Answer 4:

要做到这一点,最简单,最全面的方法是使用ErrorReportValve - 只是下面的行添加到您的server.xml中的主机部分(在这里你应该已经AccessLogValve:

<Valve className="org.apache.catalina.valves.ErrorReportValve"
    showReport="false" 
    showServerInfo="false"/>    

通过这种方式,你都躲在(因为可选showReport的= FALSE)服务器信息,并堆栈跟踪。

你可以在阅读更多关于这个安全性如何及的文件中错误报告阀门 。



Answer 5:

一个可能的选择是建立一个Servlet过滤器 ,可能会错误页面重定向到确切的页面你想...你只会这个代码一次,它会工作的所有的错误代码..



文章来源: Reducing information disclosure in Tomcat error pages