JAVA如何限制用户IP地址?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA如何限制用户IP地址?相关的知识,希望对你有一定的参考价值。
限制一部分IP段用户访问。
java web中限制访问的ip,主要是使用session的getRemortIP(HttpServletRequest)方法,如下代码:
/***
* @param request
* @return
*
* 功 能 :得到用户Ip地址
*/
public static String getRemortIP(HttpServletRequest request)
if (request.getHeader("x-forwarded-for") == null)
return request.getRemoteAddr();
return request.getHeader("x-forwarded-for");
调用
String ip = getRemortIP(HttpServletRequest);
if(ip == "127.0.0.1")
System.out.print("禁止访问");
Hr完整项目中 --- common.jsp 得到网址
<%
//路径
String path = request.getContextPath();
// request 保存
request.setAttribute("path",path);
%> 参考技术A
在用户登录时,得到用户的ip地址,只让指定的ip能登录
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
ip = request.getHeader("Proxy-Client-IP");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
ip = request.getHeader("WL-Proxy-Client-IP");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
ip = request.getRemoteAddr();
参考技术B request.getRemoteAddr();得到IP地址。然后用split(“.”)方法用点把IP地址隔开。然后就可以做限制操作了! 参考技术C 首先设置一个白名单表,
当用户访问的时候,你就获取用户的ip地址,是否在白名单表中,如果不存在,则不予理睬 参考技术D 你的意思是把一个Set放到session里用来记录IP吗?
感觉好像放到session里不行啊,因为session只是某个ip的用户和应用的一次会话,一般情况下关掉浏览器就没了,如果该用户再次访问该应用的时候就是另外一个session了(session id不同),因此笼统的说,对于同一个ip来说,都可以建立无数个session,那怎么能让session里的一个对象保存不同ip信息呢?这样的话 ,这个Set里永远只可能有一个ip,就是访问用户的ip.
是不是可以考虑放到application里或者干脆存到数据库里?
如何在 Java Web 应用程序中限制客户端 IP 地址
【中文标题】如何在 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如何限制用户IP地址?的主要内容,如果未能解决你的问题,请参考以下文章