精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

為Java Web應用程序增加入侵檢測功能

開發 后端
在Java Web應用程序中,通過軟件的方式可以實現簡單的入侵檢測及防御。其原理為在用戶訪問Web系統時記錄每個用戶的信息,然后進行對照,并根據設定的策略(比如:1秒鐘刷新頁面10次)判斷用戶是否屬于惡意刷新。

一、簡介

在Java Web應用程中,特別是網站開發中,我們有時候需要為應用程序增加一個入侵檢測程序來防止惡意刷新的功能,防止非法用戶不斷的往Web應用中重復發送數據。當然,入侵檢測可以用很多方法實現,包括軟件、硬件防火墻,入侵檢測的策略也很多。在這里我們主要介紹的是Java Web應用程序中通過軟件的方式實現簡單的入侵檢測及防御。

該方法的實現原理很簡單,就是用戶訪問Web系統時記錄每個用戶的信息,然后進行對照,并根據設定的策略(比如:1秒鐘刷新頁面10次)判斷用戶是否屬于惡意刷新。

我們的入侵檢測程序應該放到所有Java Web程序的執行前,也即若發現用戶是惡意刷新就不再繼續執行Java Web中的其它部分內容,否則就會失去了意義。這就需要以插件的方式把入侵檢測的程序置入Java Web應用中,使得每次用戶訪問Java Web,都先要到這個入侵檢測程序中報一次到,符合規則才能放行。

Java Web應用大致分為兩種,一種純JSP(+Java Bean)方式,一種是基于框架(如Struts、EasyJWeb等)的。第一種方式的Java Web可以通過Java Servlet中的Filter接口實現,也即實現一個Filter接口,在其doFilter方法中插入入侵檢測程序,然后再web.xml中作簡單的配置即可。在基于框架的Web應用中,由于所有應用都有一個入口,因此可以把入侵檢測的程序直接插入框架入口引擎中,使框架本身支持入侵檢測功能。當然,也可以通過實現Filter接口來實現。

在EasyJWeb框架中,已經置入了簡單入侵檢測的程序,因此,這里我們以EasyJWeb框架為例,介紹具體的實現方法及源碼,完整的代碼可以在EasyJWeb源碼中找到。

在基于EasyJWeb的Java Web應用中,默認情況下你只要連續刷新頁面次數過多,即會彈出如下的錯誤:

EasyJWeb框架友情提示!:-):

您對頁面的刷新太快,請等待60秒后再刷新頁面!

二、用戶訪問信息記錄UserConnect.java類

這個類是一個簡單的Java Bean,主要代表用戶的信息,包括用戶名、IP、第一次訪問時間、最后登錄時間、登錄次數、用戶狀態等。全部

代碼如下:

package com.easyjf.web;

import java.util.Date;
/**
*
*

Title:用戶驗證信息


*

Description:記錄用戶登錄信息,判斷用戶登錄情況


*

Copyright: Copyright (c) 2006


*

Company: www.easyjf.com


* @author 蔡世友
* @version 1.0
*/
public class UserConnect {
private String userName;
private String ip;
private Date firstFailureTime;
private Date lastLoginTime;
private int failureTimes;//用戶登錄失敗次數
private int status=0;//用戶狀態0表示正常,-1表示鎖定
public int getFailureTimes() {
return failureTimes;
}
public void setFailureTimes(int failureTimes) {
this.failureTimes = failureTimes;
}
public Date getFirstFailureTime() {
return firstFailureTime;
}

public void setFirstFailureTime(Date firstFailureTime) {
this.firstFailureTime = firstFailureTime;
}

public String getIp() {
return ip;
}

public void setIp(String ip) {
this.ip = ip;
}

public Date getLastLoginTime() {
return lastLoginTime;
}

public void setLastLoginTime(Date lastLoginTime) {
this.lastLoginTime = lastLoginTime;
}

public String getUserName() {
return userName;
}

public void setUserName(String userName) {
this.userName = userName;
}

public int getStatus() {
return status;
}

public void setStatus(int status) {
this.status = status;
}

}

 

三、監控線程UserConnectManage.java類

這是入侵檢測的核心部分,主要實現具體的入侵檢測、記錄、判斷用戶信息、在線用戶的刷新等功能,并提供其它應用程序使用本組件的調用接口。

package com.easyjf.web;

import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import org.apache.log4j.Logger;
/**
*
*

Title:用戶入侵檢測信息


*

Description:用于判斷用戶刷新情況檢查,默認為10秒鐘之內連續連接10次為超時


*

Copyright: Copyright (c) 2006


*

Company: www.easyjf.com


* @author 蔡世友
* @version 1.0
*/
public class UserConnectManage {
private static final Logger logger = (Logger) Logger.getLogger(UserConnectManage.class.getName());
private static int maxFailureTimes=10;//最大登錄失敗次數
private static long maxFailureInterval=10000;//毫秒,達到最大登錄次數且在這個時間范圍內
private static long waitInterval=60000;//失敗后接受連接的等待時間,默認1分鐘
private static int maxOnlineUser=200;//同時在線的最大數
private final static Map users=new HashMap();//使用ip+userName為key存放用戶登錄信息UserLoginAuth
private static Thread checkThread=null;
private static class CheckTimeOut implements Runnable{ 
private Thread parentThread;
public  CheckTimeOut(Thread parentThread) 
{
this.parentThread=parentThread; 
synchronized(this){
if(checkThread==null){   
checkThread= new Thread(this);
//System.out.println( "創建一個新線程!");
checkThread.start();   
}
}

public void run() {  
while(true)
{
if(parentThread.isAlive()){
try{
Thread.sleep(2000);
int i=0;
if(users.size() >maxOnlineUser)//當達到最大用戶數時清除
{
synchronized(users){//執行刪除操作
Iterator it=users.keySet().iterator();
Set set=new HashSet();
Date now=new Date();
while(it.hasNext())
{
Object key=it.next();
UserConnect user=(UserConnect)users.get(key);
if(now.getTime()-user.getFirstFailureTime().getTime() >maxFailureInterval)//刪除超時的用戶
{      
set.add(key);
logger.info( "刪除了一個超時的連接"+i);
i++;
}
}
if(i <5)//如果刪除少于5個,則強行刪除1/2在線記錄,犧牲性能的情況下保證內存
{
int num=maxOnlineUser/2;
it=users.keySet().iterator();
while(it.hasNext() && i{      
set.add(it.next());
logger.info( "刪除了一個多余的連接"+i);
i++;
}
}
users.keySet().removeAll(set);
}
}

}
catch(Exception e)
{
e.printStackTrace();
}

}
else
{   
break;
}
}
logger.info( "監視程序運行結束!"); 
}
}
//通過checkLoginValidate判斷是否合法的登錄連接,如果合法則繼續,非法則執行
public static boolean checkLoginValidate(String ip,String userName)//只檢查認證失敗次數
{
boolean ret=true;
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);  
if(checkThread==null)new CheckTimeOut(Thread.currentThread());

else
{
if(auth.getFailureTimes() >maxFailureTimes)
{
//如果在限定的時間間隔內,則返回拒絕用戶連接的信息
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的核心 Servletcom.easyjf.web.ActionServlet 中調用UserConnectManage的代碼:

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

五、總結

當然,這里提供的方法只是一個簡單的實現示例,由于上面的用戶信息是直接保存在內存中,若并發用戶很大的時候的代碼的占用,可以考慮引入數據庫來記錄用戶的訪問信息,當然相應的執行效率肯定用降低。上面介紹的實現中,入侵檢測判斷的策略也只有用戶訪問次數及時間間隔兩個元素,您還可以根據你的實現情況增加其它的檢測元素。

【編輯推薦】

  1. 新一代Java Web開發框架JSF訪談實錄
  2. Java Web層的下一個王者是誰?
  3. Java Web三層架構的配置詳解
責任編輯:yangsai 來源: EasyJF
相關推薦

2019-07-02 08:00:00

JavaScriptWeb對象

2009-06-30 15:32:00

入侵檢測Java Web

2010-05-20 09:48:36

2011-03-22 14:12:17

LAMP

2012-08-06 09:52:03

Android搜索功能

2023-01-09 17:04:24

2010-03-09 13:27:23

Web 2.0應用程序

2010-02-01 14:05:03

2009-04-01 14:33:33

2009-07-09 16:47:26

Servlet的Web

2012-03-20 09:20:40

Go語言

2013-08-08 09:48:10

Web

2012-06-11 09:37:41

2009-06-11 13:46:38

用戶訪問權限GlassFish

2013-11-19 15:35:01

2010-02-26 11:08:29

Python應用程序

2011-08-30 09:38:02

Ubuntu

2019-12-16 10:01:54

Java開發Web

2011-11-15 10:28:37

2010-07-12 10:11:27

ibmdwWeb
點贊
收藏

51CTO技術棧公眾號

久久精品黄色| 韩国三级在线观看久| 午夜欧美理论片| heyzo亚洲| 国产成a人亚洲精v品在线观看| 亚洲福利在线观看视频| 久久高清一区| 美日韩精品视频免费看| 精品人妻一区二区三区日产乱码卜| 亚洲精品国产嫩草在线观看| 亚洲最色的网站| 亚洲看片网站| 日本在线一二三| 国产寡妇亲子伦一区二区| 日韩免费观看av| 国产在线观看你懂的| 日韩国产在线| 亚洲跨种族黑人xxx| 男生和女生一起差差差视频| 亚洲人免费短视频| 亚洲第一av色| 久久久成人精品一区二区三区| 日本1级在线| 国产成人在线视频网站| 国产精品视频免费在线观看| 久久青青草视频| 激情偷拍久久| 欧美老女人xx| 波多野结衣亚洲一区二区| 国产精品美女久久久久久不卡| 亚洲国产欧美一区二区三区同亚洲| 午夜久久福利视频| 成人精品动漫| 欧美在线不卡一区| 精品免费国产一区二区| 成年人黄色大片在线| 一区二区三区蜜桃网| 中文字幕一区二区三区四区五区| 国内在线精品| 久久精品视频一区二区| 精品一区久久久| 手机av在线免费观看| 成人教育av在线| 成人片在线免费看| 隣の若妻さん波多野结衣| 国产米奇在线777精品观看| 国产精品天天狠天天看| 欧美国产一级片| 日本伊人精品一区二区三区观看方式| 日韩av高清不卡| 欧美黄色一级大片| 日韩专区在线视频| 国产精品福利在线| 精品一区二三区| 蜜桃视频一区二区三区| 国产精品美女久久久免费| 日韩久久久久久久久久| 免费观看久久久4p| 成人xxxx视频| 精品欧美在线观看| 国产suv精品一区二区三区| 国产精品久久亚洲7777| 少妇喷水在线观看| 久久蜜桃一区二区| 亚洲国产欧洲综合997久久| 波多野结衣一区二区| 国产精品乱码一区二区三区软件| 亚洲综合网中心| 99热国产在线| 亚洲成人av资源| 六月丁香婷婷激情| 日韩a**中文字幕| 在线电影国产精品| 日本人添下边视频免费| 宅男在线一区| 精品国产一区av| 九九免费精品视频| 国产精品一国产精品k频道56| 国产精品va在线播放| 国产麻豆91视频| 成人午夜视频在线| 欧洲精品在线一区| 亚洲小说区图片区都市| 精品日本美女福利在线观看| 国产三级三级三级看三级| 国产一区二区三区视频在线| 亚洲风情亚aⅴ在线发布| 免费看污片网站| 99久久亚洲精品| 国内精品免费午夜毛片| 亚洲天堂五月天| 国产v综合v亚洲欧| 色播五月综合| 国产福利在线免费观看| 色老汉av一区二区三区| 亚洲av无一区二区三区久久| 亚洲免费成人av在线| 久久精品亚洲精品| 99热只有这里有精品| 久草这里只有精品视频| 久久久久久艹| 97caopron在线视频| 一本到高清视频免费精品| 中文字幕avav| 欧美日韩伦理| 97超级碰在线看视频免费在线看| 国产精选久久久| 久久日韩粉嫩一区二区三区| 400部精品国偷自产在线观看 | 国产白丝精品91爽爽久久| 欧美日本亚洲| av在线网页| 3d动漫精品啪啪| 国产免费看av| 亚洲激情自拍| 97免费资源站| 91啦中文在线| 色视频一区二区| 理论片大全免费理伦片| 一区二区三区四区日韩| 国产精品美女主播在线观看纯欲| 人妻视频一区二区三区| 亚洲人成小说网站色在线| www.欧美日本| 亚洲警察之高压线| 91tv亚洲精品香蕉国产一区7ujn| 亚洲国产精品18久久久久久| 亚洲人成影院在线观看| 日韩中文字幕a| 欧美色蜜桃97| 国产经典一区二区| 国产九九在线| 一本久道中文字幕精品亚洲嫩| 免费的av网站| 在线综合亚洲| 久久99精品久久久久久青青日本| 波多野结衣在线观看| 欧美r级电影在线观看| 精品无码久久久久成人漫画| 久久精品999| 一本一道久久a久久精品综合| 一区二区三区短视频| 日韩成人在线视频| 国产在线观看黄色| 2020国产精品自拍| 18岁视频在线观看| 精品视频免费| 国产欧美日韩免费| 91精品专区| 56国语精品自产拍在线观看| 九九热视频在线免费观看| 久久国产精品99精品国产 | 国产麻豆剧传媒精品国产av| 红桃视频国产精品| 国产日韩欧美亚洲一区| 亚洲性受xxx喷奶水| 亚洲欧美日韩高清| 懂色av中文字幕| 国产精品久久久久桃色tv| 女同激情久久av久久| 欧美国产三级| 国产欧美欧洲| 中文字幕色婷婷在线视频| 亚洲精品一区在线观看香蕉| 最近中文字幕在线观看视频| 国产精品美女久久久久av爽李琼| 日本中文字幕精品—区二区| 伊人青青综合网| 国产高清在线一区二区| 黄色18在线观看| 曰本色欧美视频在线| 97国产精品久久久| 亚洲国产精品久久人人爱| 一二三不卡视频| 免费成人小视频| 国产一级不卡视频| 蜜臀av免费一区二区三区| 国产精品亚洲自拍| 日韩123区| 国产一区二区成人| www.好吊色| 一本久道中文字幕精品亚洲嫩| 99re6热在线精品视频| 国产不卡高清在线观看视频| 激情视频综合网| 亚洲电影在线一区二区三区| 久久99欧美| 经典三级久久| 欧美最猛性xxxxx(亚洲精品)| 日本在线免费网| 亚洲激情第一页| 亚洲综合精品视频| 亚洲va欧美va天堂v国产综合| 纪美影视在线观看电视版使用方法| 国产一区美女在线| aaaaaa亚洲| 欧美精品1区| 婷婷久久青草热一区二区| 成人激情自拍| 成人激情视频网| 久久青青视频| 欧美日本中文字幕| а天堂8中文最新版在线官网| 精品卡一卡二卡三卡四在线| 伊人22222| 欧美性少妇18aaaa视频| 久久久久99精品成人片毛片| 中文字幕国产一区| 北岛玲一区二区| 国产成人一区在线| 国产日韩欧美久久| 久久精品盗摄| 水蜜桃色314在线观看| 91亚洲国产高清| 日本在线观看一区二区| 国产乱人伦丫前精品视频| 91在线色戒在线| 99久久精品一区二区成人| 欧美一级片一区| 不卡的av影片| 欧美日韩国产成人| 黄网页在线观看| 中文字幕在线精品| 国产在线小视频| 精品小视频在线| 天天操天天插天天射| 日韩欧美一级二级| 国产精品久久久久久久免费看 | 国产精品人人妻人人爽人人牛| 亚洲三级电影在线观看| 久久久久久久久久久综合| 伊人情人综合网| 福利网在线观看| 国产精品毛片久久| 一区一区视频| 99久久夜色精品国产亚洲狼 | 国产精品九九| 成人免费看片'免费看| 中文字幕av亚洲精品一部二部| 亚洲欧美日韩不卡| 99久久精品费精品国产| 亚洲欧洲精品在线 | 成人中文字幕视频| 成人高清在线观看| 成人福利一区| 久久伊人一区| 亚洲桃色综合影院| 欧美日韩免费观看一区| 精品国产一区二区三区香蕉沈先生| 日本不卡高清视频一区| 国产欧美日韩精品一区二区免费 | 牛人盗摄一区二区三区视频| 小说区图片区色综合区| 欧美久久久久久久| av永久不卡| 国产91av视频在线观看| 欧美在线三区| 免费在线看黄色片| 亚洲综合好骚| caoporn超碰97| 久久精品国产第一区二区三区| 亚洲一区二区福利视频| 国产精品一品视频| 国产成人av无码精品| 久久综合色鬼综合色| 国产又粗又长免费视频| 日韩毛片精品高清免费| 久久久久久久国产视频| 黄色一区二区在线| 午夜久久久久久久久久影院| 欧美高清一级片在线| 亚洲精品视频91| 亚洲九九九在线观看| 日韩欧美小视频| 欧美精品激情blacked18| 345成人影院| 国产日韩在线观看av| 盗摄系列偷拍视频精品tp| 欧美日韩国产三区| 91精品观看| 情侣黄网站免费看| 国内精品视频一区二区三区八戒| 中文字幕人妻熟女在线| 国产女人18毛片水真多成人如厕| 永久av免费网站| 天天影视网天天综合色在线播放| 91丨九色丨海角社区| 日韩美女主播在线视频一区二区三区 | 欧洲精品在线一区| 欧美精品一卡| 欧美在线观看视频网站| 福利一区在线观看| 精品一区二区三区蜜桃在线| 亚洲最新视频在线观看| 中文字幕激情视频| 亚洲国产美女久久久久| 麻豆网站在线| 国产不卡精品视男人的天堂| 国内不卡的一区二区三区中文字幕 | 久久久久女教师免费一区| 最新日韩三级| 国产女主播一区二区| 伊人成综合网| 冲田杏梨av在线| 99久久99久久综合| 波多野结衣家庭教师| 欧美少妇bbb| 午夜激情小视频| 欧美国产日本高清在线| 久久福利在线| 欧美色欧美亚洲另类七区| 激情综合网址| 91蝌蚪视频在线| 国产精品乱人伦中文| 天堂а√在线中文在线新版 | 国模无码视频一区| 亚洲视频在线观看一区| 国产亚洲久一区二区| 亚洲激情在线观看视频免费| 视频在线这里都是精品| 91热精品视频| 久久一区二区三区电影| 北条麻妃av高潮尖叫在线观看| 99热精品国产| 香蕉视频一区二区| 日韩精品一区二区三区视频在线观看 | www.国产视频.com| 国产日韩精品一区二区三区| 在线观看亚洲欧美| 亚洲激情视频在线观看| 国产精品一二三产区| 国产精品v欧美精品v日韩精品| 欧美一区影院| 三级网站免费看| 一区二区三区在线播放| 国产黄色一区二区| 不卡av在线播放| 视频在线观看免费影院欧美meiju| 一本—道久久a久久精品蜜桃| 蜜臀av性久久久久蜜臀aⅴ| 免费观看a级片| 在线视频观看一区| av在线三区| 国产色婷婷国产综合在线理论片a| 成人写真视频| 视频免费1区二区三区| 亚洲欧美色综合| 国产不卡av在线播放| 九九九热精品免费视频观看网站| 视频一区日韩| 人妻少妇精品无码专区二区| 97国产一区二区| 久久久久久久久久久影院| 亚洲性av网站| japansex久久高清精品| 路边理发店露脸熟妇泻火| 国产99久久久久| 国内精品福利视频| 国产亚洲成精品久久| 全球中文成人在线| 五月天激情图片| a级精品国产片在线观看| 日本中文字幕在线| 中文字幕久热精品视频在线| 狂野欧美xxxx韩国少妇| 免费看毛片的网址| 久久久久88色偷偷免费| 一二三四区视频| 欧美精品videosex牲欧美| 偷拍自拍亚洲色图| 男女视频在线看| 亚洲在线中文字幕| 日本高清中文字幕二区在线| 国产精品亚洲美女av网站| 午夜欧美视频| 性高潮久久久久久久| 678五月天丁香亚洲综合网| 大桥未久在线播放| 日韩欧美亚洲在线| 国产另类ts人妖一区二区| 五月天综合激情网| y97精品国产97久久久久久| 国产精品超碰| 狠狠干狠狠操视频| 亚洲不卡av一区二区三区| 天天在线视频色| 精品视频一区二区三区四区| 久久99久久99| 国产情侣在线视频| 北条麻妃久久精品| 日韩母乳在线| 992kp免费看片| 欧洲色大大久久| av影院在线| 最近中文字幕免费mv| 91色.com| 亚洲av无码一区二区三区dv| 国产精品免费观看在线| 99精品国产一区二区青青牛奶| 亚洲精品自拍视频在线观看|