如何在 Java Web 应用程序中限制客户端 IP 地址

Posted

技术标签:

【中文标题】如何在 Java Web 应用程序中限制客户端 IP 地址【英文标题】:How to restrict client IP address in Java Web Application 【发布时间】:2016-02-25 04:33:06 【问题描述】:

我需要根据客户端 IP 地址限制我的视图,我有静态 IP 地址列表,我只想向那些在我的 java Web 应用程序中注册 IP 地址的人显示视图

【问题讨论】:

基于 IP 地址的限制通常不是一个好主意。客户端可以轻松隐藏或更改其 IP,因此最好使用某种身份验证。 【参考方案1】:

取决于您希望如何实现过滤。

    您可以使用过滤器,该过滤器将验证并仅将请求转发到 Servlet 在 Servlet/Controller 中,您可以编写检查以控制重定向到有效 JSP 或错误 JSP 在 servlet 上下文中加载列表并使用它来检查是否在 JSP 中显示内容。

如果我是你,我会使用过滤器,这样你甚至不用接触带有该 IP 的 Servlet 层。

查看此链接以了解 Servlet 过滤器 - http://docs.oracle.com/javaee/6/tutorial/doc/bnagb.html

【讨论】:

我需要通过 javascript 获取 IP 地址,我该怎么做? @DanialSaeed 由于安全原因,无法从 JS 中获取客户端的 IP 地址。一种选择是调用将返回 IP 地址的 servlet。【参考方案2】:

这取决于你想做什么。

除其他外,您可以仅通过配置服务器来过滤(限制)您的应用程序视图到某些 IP。

如何做取决于服务器。

例如,对于 Tomcat,您需要编辑 context 中的 org.apache.catalina.valves.RemoteAddrValve(文件名:context.xml)。 也可以看看: http://tomcat.apache.org/tomcat-8.0-doc/config/valve.html#Remote_Address_Filter

这种方法的优点是可以完全隔离 从IP过滤应用程序开发。你可以申请 过滤到多个应用程序。 缺点是与基于应用程序的解决方案相比,它的灵活性和可定制性较差。

【讨论】:

以上是关于如何在 Java Web 应用程序中限制客户端 IP 地址的主要内容,如果未能解决你的问题,请参考以下文章

如何通过java程序来加载客户端证书进行ssl连接?

如何限制对Web API 2应用程序中的已知客户端应用程序的API访问?

如何从Java脚本安全地调用Google Cloud Run服务?

FlowUs 使用攻略:如何快速制作 Web 应用(PWA)

如何设置servlet中并发请求数的限制?

如何解决 Web 套接字客户端连接数限制