如何为JavaWeb应用程序增加入侵检测功能
来源:优易学  2011-3-24 11:48:25   【优易学:中国教育考试门户网】   资料下载   IT书店

 

  //登录次数加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的核心 Servletcom.easyjf.web.ActionServlet 中调用UserConnectManage的代码:
  if(!UserConnectManage.checkLoginValidate(request.getRemoteAddr(),"guest"))
  {
  info(request,response,new Exception("您对页面的刷新太快,请等待"+UserConnectManage.getWaitInterval()/1000+"秒后再刷新页面!"));
  return;
  }
  五、总结
  当然,这里提供的方法只是一个简单的实现示例,由于上面的用户信息是直接保存在内存中,若并发用户很大的时候的代码的占用,可以考虑引入数据库来记录用户的访问信息,当然相应的执行效率肯定用降低。上面介绍的实现中,入侵检测判断的策略也只有用户访问次数及时间间隔两个元素,您还可以根据你的实现情况增加其它的检测元素。

上一页  [1] [2] [3] 

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训