java中如何获取用户的IP地址及禁止此人

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中如何获取用户的IP地址及禁止此人相关的知识,希望对你有一定的参考价值。

java中如何获取用户的IP地址及禁止此人
希望大家能有详细的代码,运行正确后50分
谢谢@!!

楼上的方法是不合理的。第一,如果用户使用代理,是无法获得真实Ip的0;第二,IF语句不能保证禁止IP,而且很多网站并不需要登录的。给楼主些方法,可供参考。
1。 获取用户IP
public String getRemortIP(HttpServletRequest request)
if (request.getHeader("x-forwarded-for") == null)
return request.getRemoteAddr();

return request.getHeader("x-forwarded-for");


这种方法总是获得用户的真实IP
2。禁止IP,可以考虑从服务器下手
(1) 如果用的是tomcat,那么在tomcat_home/conf/server.xml中的<host></host>之间加一行代码:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" deny="192.168.1.1"/>
这样192.168.1.1这个ip访问webapp时会收到 403 错误
(2) 如果是apache那么:
<Directory /var/web/dir1>
Allow from all
Deny from 111.111.111.111
</Directory>
上面限制单个IP,限制IP段用*号代替。如111.111.111.*

(3) 或者楼主也可以像楼上说的用代码实现,给你个JS代码:
<SCRIPT LANGUAGE="java script">
<!-- Begin
netscape = (navigator.appName.indexOf("Netscape") != -1);
version4 = (navigator.appVersion.indexOf("4.") != -1);

if (netscape && version4)
ip = "" + java.net.InetAddress.getLocalHost().getHostAddress();
if (ip.indexOf("235.12") >= -1)
// 这是想要禁止访问的IP例如: 235.12.xxx.xxx


alert("You are not permitted to access this site.");
history.go(-1);


// End -->
</script>

将以上代码加入到<head>区域中。
参考技术A 如果你是javaWeb,可以在过滤器中使用request.getRemoteAddr() ,发现此IP直接跳转到无用的页面或者不存在的页面
如果你是socket,也可以通过socket.getInetAddress()获取IP,发现此IO直接把他的连接关闭就可以了
参考技术B public String getRemortIP(HttpServletRequest request)

return request.getRemoteAddr();



禁止ip就是写一个 if 如果是登录时候是这个ip 那么提示无法登陆就可以了,返回登陆页
参考技术C request.getRemoteAddr();

以上是关于java中如何获取用户的IP地址及禁止此人的主要内容,如果未能解决你的问题,请参考以下文章

java如何获取当前登录ip

java如何获取当前登录ip

java中如何获取到本机的外网ip地址?

java如何获取当前时间,java如何获取ip地址

Java如何从域名中获取IP地址?

使用LVS或者阿里云的SLB后如何获取访客真实的IP地址