哪个是从错误页面隐藏/隐藏tomcat版本的最佳方法?

时间:2010-02-15 14:18:20

标签: tomcat version

有人可以告诉我建议采用以下两种方法中的哪一种,以及为什么:

  • 进行必要的更改 ServerInfo.properties

  • 在web.xml中定义“error-page”

3 个答案:

答案 0 :(得分:13)

答案有点过时,所以:如果您使用的是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的文档中详细了解相关信息。

答案 1 :(得分:4)

我会对ServerInfo.properties进行更改 - 可能还有其他地方可以获取ServerInfo.properties版本信息,而不仅仅是错误页面。 (也许有人会离开默认主页,样本等等,这些可能会有。)

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

答案 2 :(得分:4)

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

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