我试图想到Tomcat会有一个关闭端口的原因,但我想不出任何问题。据我所知,这个端口只有在本地发送消息时才会工作,因为它连接到环回设备,因此有什么意义呢?这是不是可以通过内部命令以一种无法被网络外部人员欺骗的方式完成的?
谢谢!
答案 0 :(得分:12)
关闭端口提供了一种操作系统中立的,可编写脚本的方法来关闭Tomcat实例。一旦删除关闭端口,您几乎肯定会进入操作系统特定代码的领域(或者至少是Windows与Unix +衍生产品的不同代码)。默认情况下,Tomcat旨在实现跨所有平台的通用配置和行为。
Tomcat安装的安全配置文件在单个开发人员计算机与云中的数千个实例之间存在巨大差异。默认配置不可能适用于所有可能的安装环境。 Tomcat旨在提供合理安全的默认设置,以便管理员根据自己的环境进行调整。
在这种情况下,如果不信任的用户a)有权访问关闭端口,并且b)知道shutdown命令,则会出现安全风险。这应该是一种相当罕见的情况,因此默认情况下为什么关闭端口仍然为localhost启用。我当然不希望运行一个服务,我关心它在我有不受信任的用户的机器上的安全性。也就是说它确实发生了,对于那些用例,可以禁用关闭端口。
禁用关闭端口后,Unix +衍生解决方案将设置TOMCAT_PID,此时脚本将继续按预期工作。在Windows上,您可能需要作为服务运行。
答案 1 :(得分:1)
我设法找到了可以传递给服务器容器here的更多参数。
除了默认值之外,您还可以传递address
属性,该属性允许您指定Tomcat可以关闭的位置,这样就更有意义了。
然而,我仍然觉得(鉴于它似乎没有理由),默认情况下应禁用它。