如何在 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
【讨论】:
以上是关于如何在 Java Web 应用程序中限制客户端 IP 地址的主要内容,如果未能解决你的问题,请参考以下文章
如何限制对Web API 2应用程序中的已知客户端应用程序的API访问?
如何从Java脚本安全地调用Google Cloud Run服务?