快速业务通道

在Java Web中的入侵检测及简单实现 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
时间间隔内,则返回拒绝用户连接的信息 if((now.getTime()-auth.getFirstFailureTime().getTime()) { ret=false; auth.setStatus(-1); } else if(auth.getStatus()==-1 && (now.getTime()-auth.getFirstFailureTime().getTime()<(maxFailureInterval+waitInterval)))//重置计数器 { ret=false; } else { auth.setFailureTimes(0); auth.setFirstFailureTime(now); auth.setStatus(0); } } //登录次数加1 auth.setFailureTimes(auth.getFailureTimes()+1); } //System.out.println(key+":"+auth.getFailureTimes()+":"+ret+":"+(now.getTime()-auth.getFirstFailureTime().getTime())); return ret; } public static void reset(String ip,String userName)//重置用户信息 { Date now=new Date(); String key=ip+":"+userName; UserConnect auth=(UserConnect)users.get(key); if(auth==null)//把用户当前的访问信息加入到users容器中 { auth=new UserConnect(); auth.setIp(ip); auth.setUserName(userName); auth.setFailureTimes(0); auth.setFirstFailureTime(now); users.put(key,auth); } else { auth.setFailureTimes(0); auth.setFirstFailureTime(now); } } public static void remove(String ip,String userName)//删除用户在容器中的记录 { String key=ip+":"+userName; users.remove(key); } public static void clear()//清空容器中内容 { if(!users.isEmpty())users.clear(); } public static long getMaxFailureInterval() { return maxFailureInterval; } public static void setMaxFailureInterval(long maxFailureInterval) { UserConnectManage.maxFailureInterval = maxFailureInterval; } public static int getMaxFailureTimes() { return maxFailureTimes; } public static void setMaxFailureTimes(int maxFailureTimes) { UserConnectManage.maxFailureTimes = maxFailureTimes; } public static int getMaxOnlineUser() { return maxOnlineUser; } public static void setMaxOnlineUser(int maxOnlineUser) { UserConnectManage.maxOnlineUser = maxOnlineUser; } public static long getWaitInterval() { return waitInterval; } public static void setWaitInterval(long waitInterval) { UserConnectManage.waitInterval = waitInterval; }

四、调用接口

在需要进入侵检测判断的地方,直接使用UserConnectManage类中的checkLoginValidate方法即可。如EasyJWeb的核心Servlet

com.easyjf.web.ActionServlet中调用UserConnectManage的代码:

if(!UserConnectManage.checkLoginValidate(request.getRemoteAddr(),"guest")) { info(request,response,new Exception("您对页面的刷新太快,请等待"+UserConnectManage.getWaitInterval()/1000+"秒 后再刷新页面!")); return; }

五、总结

当然,这里提供的方法只是一个简单的实现示例,由于上面的用户信息是直接保存在内存中,若并发用户很大的时候的代码的占用,可以考虑引入数据库来记录用户的访问信息,当然相应的执行效率肯定用降低。上面介绍的实现中,入侵检测判断的策略也只有用户访问次数及时间间隔两个元素,您还可以根据你的实现情况增加其它的检测元素。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号