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

San*_*wal 9 tomcat version

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

  • 对ServerInfo.properties进行必要的更改

  • 在web.xml中定义"error-page"

Val*_*tin 16

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

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

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

您可以在安全性如何以及错误报告阀的文档中阅读有关此内容的更多信息.


Nat*_*ate 5

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

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


Bal*_*usC 5

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

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