【问题标题】:Which is the best way to mask / hide tomcat version from error pages?从错误页面中屏蔽/隐藏tomcat版本的最佳方法是什么?
【发布时间】:2010-02-15 14:18:19
【问题描述】:

有人可以告诉我推荐以下两种方法中的哪一种以及为什么:

  • 对 ServerInfo.properties

  • 在 web.xml 中定义“错误页面”

【问题讨论】:

标签: tomcat version


【解决方案1】:

答案有点过时了,所以:如果您使用的是 tomcat 6 或更新版本(我已经在 tomcat 7 上测试过),您可以使用 ErrorReportValve 以更容易配置和维持。只需将以下行添加到 server.xml 的 Host 部分(您应该已经拥有 AccessLogValve:

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

通过这种方式,您隐藏了服务器信息和(因为可选的 showReport=false)还有堆栈跟踪。

您可以在Security How ToError Report Valve 的文档中了解更多相关信息。

【讨论】:

    【解决方案2】:

    无论如何,我都会对 ServerInfo.properties 进行更改 - 除了错误页面之外,可能还有其他地方可以获取 ServerInfo.properties 版本信息。 (也许有人留下了默认主页、示例等,这些可能都有。)

    如果您愿意,可以在您的 Web 应用程序中定义错误页面 - 一个更快的选项可能是通过在 CATALINA_HOME/conf/web.xml 中指定来全局更改您的默认错误页面 - 这将默认使用您新指定的错误页面,即使开发人员忘记为其应用指定错误页面。

    【讨论】:

      【解决方案3】:

      更改ServerInfo.properties 是最安全的。例如,如果您在 http://example.com/contextname 上部署了一个 Web 应用程序,那么您仍然可以通过 http://example.com/blah 左右获得一个 404。也可以通过使用机器人以不支持的方法发送请求(返回 503 错误页面)以编程方式获取它。

      也就是说,老实说,我没有看到任何有效的理由来隐藏 Tomcat 版本。这些信息实际上对“普通用户”没有任何价值。它也不会阻止任何黑客尝试一切以将其关闭或利用安全漏洞(如果有的话......)。他们不担心版本是否显示。对于“普通用户”,我仍然会使用自定义错误页面,该页面与相关 web 应用的样式更加集成,因此它不那么“可怕”,从而改善了用户体验。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 2011-07-16
      • 1970-01-01
      • 2015-09-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多