【问题标题】:Tomcat Remote Address Filter is not working - Tomcat 9.0.XTomcat 远程地址过滤器不起作用 - Tomcat 9.0.X
【发布时间】: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 &lt;param-value&gt;127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1&lt;/param-value&gt;,但我和我的队友仍然可以毫无问题地访问这些页面。

我的环境详情>>

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


【解决方案1】:

一种可能的解决方案是在 application/META-INF/context.xml 中添加限制。这将导致整个应用程序出现 403。你可以在你的 tomcat 的 webapps\manager\META-INF 中看到实现。

<?xml version="1.0" encoding="UTF-8"?>
<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
</Context>

【讨论】:

    【解决方案2】:

    我发现了问题。问题出在 url 模式上。我们不应该将应用程序上下文添加到 url-pattern。

    现在这适用于以下设置。

    <url-pattern>/actuator/health </url-pattern>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-28
      • 2019-05-17
      • 1970-01-01
      • 2014-08-14
      • 2013-06-20
      • 1970-01-01
      相关资源
      最近更新 更多