代码之家  ›  专栏  ›  技术社区  ›  Andrzej Doyle

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

  •  11
  • Andrzej Doyle  · 技术社区  · 16 年前

    <error-page> 选项,但它似乎在两个期望的计数上都失败了,部分原因是我必须多次列出相同的可选错误页(我要处理的每个响应代码都有一个错误页),而且我觉得这可能不是100%健壮的;如果攻击者能够以某种方式返回我没有明确列出的错误代码,他们将获得默认错误页面。

    理想情况下,最好使用一个简单的选项来设置一个通用的自定义错误页面,或者干脆在默认错误页面中禁用发送任何HTML以及错误代码。如果这两个选项都不可能实现,我会有兴趣找出实现这一功能的典型方式(讨论/说明为什么这些假设选项不存在的加分点,因为我的要求对于在生产中使用Tomcat的任何人来说都是非常标准的…)。

    5 回复  |  直到 16 年前
        1
  •  10
  •   Valentin    9 年前

    要做到这一点,最简单、最全面的方法是使用ErrorReportValve—只需将以下行添加到server.xml的主机部分(您应该已经拥有AccessLogValve):

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

    这样,您就隐藏了服务器信息和堆栈跟踪(因为可选的showReport=false)。

    您可以在 Security How To 并在 Error Report Valve .

        2
  •  7
  •   Jeremy Stein    16 年前

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

        3
  •  4
  •   Tim Cooper    14 年前

    我同意Jeremy Stein的观点,即<错误页面>答案如下,但我想补充两点:

    1. 你应该放一个<错误页面>CATALINA_HOME/conf/web.xml文件中的条目,以及应用程序的web.xml文件,以防黑客试图访问其他web应用程序中的URL,如默认安装的“manager”、“tomcat”、“examples”等。。

    2. 如果您想保护服务器,那么(显然)就没有处理这些错误页面那么简单。此链接列出了您需要执行的操作:

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

        4
  •  3
  •   kgiannakakis    16 年前

    有些错误是由容器直接发送的,您的应用程序没有机会处理它们。例如,当请求不存在的资源时,将发送404错误。应用程序对此所做的唯一方法是声明适当的 <error-page>

    我同意Jeremy Stein的观点 <错误页面> 这是正确的答案。毕竟,所有的错误代码都不是无限的。

    here

        5
  •  2
  •   KLE rslite    16 年前

    Servlet过滤器 ,这可能会将错误页面重定向到您想要的页面。。。您只需编写一次此代码,它将适用于所有错误代码。。