0

亲爱的,

任何人都可以帮助通过 IP 地址限制对 Web 应用程序上特定路径的访问吗?

目前我已经应用了 RemoteAddrValve,它完美地适用于所有 Web 应用程序目录。实际上我只需要在特定路径上应用它。

如果有人可以提供帮助,我们将不胜感激。

<Context><WatchedResource>WEB-INF/web.xml</WatchedResource><Valve className="org.apache.catalina.valves.RemoteAddrValve" deny="some IPs" denyStatus="404"/></Context>
4

1 回答 1

0

正如您所提到的,这RemoteAddrValve对于您的需要来说太宽泛了。解决方案是使用RewriteValve匹配两个条件(IP + 路径)和规则,拒绝流量。不要忘记阅读Tomcat 文档以了解有关重写的更多信息。

首先,在 server.xml 的 Host 定义中添加适当的阀门:

<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />

假设您的主机名是默认主机名(localhost),您需要$CATALINA_BASE/conf/Catalina/localhost/rewrite.config使用以下内容创建文件:

RewriteCond %{REMOTE_ADDR} bad.ip.addr.ess
RewriteRule ^/forbidden-path(.*)$ / [F]

F 标志将发送 403 Forbidden HTTP 代码。您可以根据需要更改规则,例如重定向到登录页面(标志 R)。

如果您的网站暴露在 Internet 上,请不要忘记任何人都可以使用代理来隐藏其真实 IP 地址。如果您在 Apache 前使用反向代理,您可能需要对其进行充分配置,以免丢失用户的 Tomcat 真实 IP 只能看到您的反向代理 IP。

于 2018-11-11T11:33:40.310 回答