为JavaWeb应用程序增加入侵检测功能

来源:java认证发布时间:2012-11-12 12:48:46java认证视频


  //登录次数加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;
  }
  五、总结
  当然,这里提供的方法只是一个简单的实现示例,由于上面的用户信息是直接保存在内存中,若并发用户很大的时候的代码的占用,可以考虑引入数据库来记录用户的访问信息,当然相应的执行效率肯定用降低。上面介绍的实现中,入侵检测判断的策略也只有用户访问次数及时间间隔两个元素,您还可以根据你的实现情况增加其它的检测元素。
  更多优质资料尽在考试大论坛 考试大在线题库 java认证更多详细资料

上一页123下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答