【发布时间】:2021-08-08 07:59:01
【问题描述】:
我正在尝试将我的一些应用程序端点限制为公共互联网。为此,我尝试了 tomcat 的远程地址过滤器。我将过滤器添加到我的应用程序的 web.xml (D:\apache-tomcat-9.0.22\webapps\myApp\WEB-INF)。但它根本没有效果。我尝试了<param-name>allow</param-name> <param-name>deny</param-name> 和我团队成员的特定 IP 地址,但仍然是我们都可以访问。每次进行此更改时,我都重新启动了 tomcat。
<filter>
<filter-name>Remote Address Filter</filter-name>
<filter-class>org.apache.catalina.filters.RemoteAddrFilter</filter-class>
<init-param>
<param-name>deny</param-name> <!-- Tried to block my team mate's IP -->
<param-value>10\.142\.16\.1</param-value> <!-- My team mates IP address -->
<!-- param-value>127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1</param-value -->
</init-param>
</filter>
<filter-mapping>
<filter-name>Remote Address Filter</filter-name>
<url-pattern>/myApp/context/* </url-pattern>
</filter-mapping>
我也尝试过documentation <param-value>127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1</param-value>,但我和我的队友仍然可以毫无问题地访问这些页面。
我的环境详情>>
I've used a standalone Tomcat. Servlet engine: [Apache Tomcat/9.0.22]
Running with Spring Boot v2.1.3.RELEASE, Spring v5.1.5.RELEASE
问题可能出在哪里?有没有办法确定web.xml 的变化是否真的反映了?
【问题讨论】:
-
您使用的 URL 模式可能不应该包含
/myApp:它是应用程序上下文路径的相对路径。试试/*。 -
@PiotrP.Karwasz 这是我需要阻止的 URL。
http://localhost:8080/myApp/actuator/health基本上我不想让外人看到这个页面。那么,我应该如何更新呢? -
@PiotrP.Karwasz 我试过 /actuator/* 还是不行
-
您可以为此使用 spring security hasIpAddress。试试stackoverflow.com/a/29274970/7887883
-
@PavanKumarTS 嗨,Pavan,我不喜欢仅仅为此目的实现 Spring 安全性。
标签: java tomcat servlet-filters tomcat9