精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧洲亚洲两性| 青青草免费在线| 欧美午夜不卡| 亚洲欧美变态国产另类| 日本人视频jizz页码69| 五月花成人网| 久久久久国产精品厨房| 亚洲xxxx18| 国产又黄又猛又粗又爽| 欧美肥老太太性生活| 欧美精品一区二区三区在线播放| 久久久久久久久久久99| 1024国产在线| 99这里只有久久精品视频| 国产97色在线|日韩| 国产综合精品久久久久成人av| 视频精品一区二区三区| 日本道精品一区二区三区| 欧美美女黄色网| 成人在线观看一区| 91视视频在线观看入口直接观看www| 国产精品爽黄69天堂a| 日韩av在线播| 午夜精品婷婷| 色婷婷av一区二区三区在线观看| 六十路息与子猛烈交尾| 日韩成人精品| 欧美色窝79yyyycom| 日韩少妇内射免费播放18禁裸乳| 麻豆视频在线免费观看| 国产欧美日韩精品在线| 久久久久久久久四区三区| 午夜免费福利视频| 狠狠色丁香久久婷婷综合丁香| 日本午夜人人精品| 国产免费av一区二区| 国产精品扒开腿做爽爽爽软件| 少妇高潮久久久久久潘金莲| 丰满少妇一区二区| 日韩有码一区| 亚洲国产精品热久久| 日本人妻一区二区三区| 国产区一区二| 6080午夜不卡| 99九九99九九九99九他书对| 日韩一区精品| 色偷偷一区二区三区| 春日野结衣av| 亚洲最大成人| 一本色道亚洲精品aⅴ| 国产精品视频一区二区三区四区五区| 免费在线看电影| 麻豆av电影在线观看| 国产精品探花在线观看| 欧美精品一区二区三区蜜桃视频| 在线成人精品视频| 精品一区二区三区四区五区| 欧美一级久久久| 九色91porny| 在线精品自拍| 亚洲国产成人av在线| 亚洲自拍偷拍精品| 欧美日韩一区二区三区在线电影 | 国产精品毛片a∨一区二区三区| 欧美日韩精品免费观看| 国产精品四虎| 亚洲欧洲性图库| 国产激情在线看| 欧美1234区| 欧美日韩在线免费| 欧美一级黄色影院| 99久热在线精品视频观看| 欧美一区二区精品| 手机免费看av片| 一道在线中文一区二区三区| 正在播放国产一区| 美女福利视频在线观看| 最新日韩在线| 国产精品久久久久福利| aaa一区二区| 99热这里都是精品| 奇米888一区二区三区| 日韩成人精品视频在线观看| 中文字幕在线观看你懂的| 精品系列免费在线观看| 国产成人成网站在线播放青青 | 亚洲石原莉奈一区二区在线观看| 色欲AV无码精品一区二区久久| 91综合在线| 久久久亚洲影院你懂的| 亚洲免费视频二区| 国产成人aaa| 老牛影视免费一区二区| 欧美精品videos另类| 亚洲第一在线综合网站| 免费激情视频在线观看| 视频精品二区| 亚洲视频综合网| 亚洲成人生活片| 久久精品毛片| 99精彩视频在线观看免费| 欧美成人免费| 一区二区三区色| 91视频免费版污| 成人在线tv视频| 久久久久北条麻妃免费看| 亚洲精品午夜国产va久久成人| 麻豆免费看一区二区三区| 国产一区二区视频在线免费观看| eeuss影院在线播放| 91桃色在线| 国产色产综合产在线视频 | 亚洲国产专区校园欧美| 国产日韩中文字幕| 视频三区在线观看| 亚洲线精品一区二区三区八戒| 亚洲福利精品视频| 日韩成人av在线资源| 久久91亚洲精品中文字幕| 久久国产香蕉视频| 久久综合九色综合97婷婷女人| 国产又粗又猛又爽又黄的网站| 狂野欧美性猛交xxxx| 亚洲美女av网站| 日本网站免费观看| 高清不卡在线观看av| 欧美aaa在线观看| 精品国产欧美日韩一区二区三区| 亚洲精品aⅴ中文字幕乱码| 538精品在线观看| 韩国一区二区视频| 亚洲国产精品一区二区第一页| 日本蜜桃在线观看视频| 欧美精品一区二区三区蜜桃| 欧美日韩在线观看成人| 国产自产高清不卡| 一本一道久久久a久久久精品91 | 久久精品国产亚洲AV熟女| 亚洲另类黄色| 精品国产乱码久久久久久88av| 在线视频中文字幕第一页| 欧美精品久久久久久久多人混战 | 在线播放黄色av| 日韩中文首页| 国产精品日韩专区| 思思99re6国产在线播放| 欧美系列亚洲系列| 在线观看免费黄色网址| 国产精品热久久| 久久99蜜桃精品| 亚洲国产婷婷香蕉久久久久久99| 日韩精品三区| 一区二区欧美在线| 中文字幕+乱码+中文乱码91| 中文字幕av不卡| 香蕉视频999| 伊人久久大香线蕉精品组织观看| 91免费高清视频| 欧美aaaxxxx做受视频| 亚洲精品一区二区三区影院| 国产真实乱偷精品视频| 99在线精品视频| 人妻无码视频一区二区三区| 国产午夜一区| 成人亚洲激情网| 男女视频在线| 亚洲欧美成人网| 亚洲综合一区中| 一区二区成人在线视频| 国产一级黄色录像| 玖玖视频精品| 熟女视频一区二区三区| 成人资源在线| 国产va免费精品高清在线观看 | 久久久久一区二区三区四区| 国产精品69页| 五月婷婷亚洲| 国产在线欧美日韩| 国产91在线播放精品| 欧美成人网在线| 天天综合网在线观看| 91福利社在线观看| 欧美日韩精品亚洲精品| 91网址在线看| 国产一区二区在线观看免费视频| 欧美三级特黄| 欧美日韩国产精品一卡| www.久久99| 欧美一区二区.| 好了av在线| 亚洲欧美日韩第一区| 国产免费av电影| 黑人巨大精品欧美一区二区三区 | 国产一区二区三区四区老人| 欧美日韩高清在线一区| 日韩中文字幕| 国产精品久久久久久久久久久不卡 | 久久久精品在线| 涩涩视频免费看| 欧美三级蜜桃2在线观看| 黄色小视频在线免费看| 中文字幕av一区二区三区| 精品人妻在线视频| 激情综合色播激情啊| av黄色在线网站| 国产一区二区三区自拍| 亚洲午夜高清视频| 婷婷五月色综合香五月| 亚洲自拍另类欧美丝袜| 日本精品另类| 欧美亚洲另类在线| 日本电影在线观看| xvideos亚洲| 国模精品一区二区| 亚洲国产精品电影| 国产xxxx在线观看| 欧美日本一区二区| 无码人妻精品一区二区三区9厂| 亚洲一二三级电影| 黄色在线观看免费| 中文字幕在线不卡一区二区三区| 特级西西人体wwwww| 成人一区二区三区中文字幕| 中文字幕中文在线| 久久一区欧美| 草草久久久无码国产专区| 精品999网站| 97视频在线免费| 欧美极品一区二区三区| 国产精品美女在线播放| 久久高清精品| 亚洲电影一二三区| 日本a级不卡| 手机成人在线| 日韩激情一区| 亚洲国产欧洲综合997久久| 欧美日本成人| 日韩.欧美.亚洲| 精品高清久久| 亚洲激情一区二区三区| 欧美理论视频| 色就是色欧美| 久久美女精品| 中国成人在线视频| 99热国内精品| 狠狠干视频网站| 欧美视频四区| 欧美视频在线观看网站 | 九九热在线免费| 日韩在线一区二区| 三级在线视频观看| 久久99精品久久久久久久久久久久| 日韩欧美国产一二三区| 在线免费观看黄色小视频| 91小视频在线观看| 亚洲最大成人网站| 国产三级一区二区| 免费精品在线视频| 亚洲免费观看高清完整| 国产一级特黄视频| 欧美性猛交xxxx| 国产精品久久久久久久久夜色| 欧美私模裸体表演在线观看| 一级黄色大毛片| 日韩欧美国产电影| 天天操天天爱天天干| 亚洲精品在线看| 在线视频婷婷| 欧美高清视频在线观看| 麻豆免费在线| 国产精品专区一| 婷婷视频一区二区三区| 精品中文字幕人| 欧美日韩中字| 精品一区二区三区无码视频| 亚洲欧美日韩国产综合精品二区 | 91手机视频在线| 国产一在线精品一区在线观看| 亚洲自偷自拍熟女另类| 捆绑调教美女网站视频一区| 欧美色图校园春色| 久久综合一区二区| 视频国产一区二区| 黄色精品在线看| 91麻豆国产视频| 亚洲国产精品电影| 激情视频在线观看| 亚洲3p在线观看| www.欧美视频| 久久久久天天天天| 欧美国产高潮xxxx1819| 欧美日韩二三区| 国产精品资源网| 精品中文字幕在线播放| 亚洲人亚洲人成电影网站色| 精品欧美一区二区三区免费观看| 欧美高清www午色夜在线视频| 四虎精品一区二区三区| 精品国产一区久久久| 天天综合av| 成人看片视频| 91亚洲自偷观看高清| 欧美成人一区二区在线观看| 精品一区二区三区免费| 国产aⅴ激情无码久久久无码| 一卡二卡三卡日韩欧美| 在线视频1卡二卡三卡| 日韩成人av网址| 成人ww免费完整版在线观看| 欧美中文字幕在线观看| 91成人午夜| 手机福利在线视频| 日韩精品1区2区3区| 中国xxxx性xxxx产国| 亚洲欧美福利一区二区| 中文字幕有码视频| 亚洲毛片一区二区| 欧美另类videos| 天天综合一区| 日韩一区二区三区不卡视频| 久久尤物电影视频在线观看| 久久精品国产亚洲AV无码男同 | 刘玥91精选国产在线观看| 日韩视频在线免费| 五月激情久久| 日本福利一区二区三区| 国产精品一二| 精品国产av色一区二区深夜久久| 一区二区三区欧美视频| 一区二区美女视频| 宅男66日本亚洲欧美视频| 午夜裸体女人视频网站在线观看| 国产传媒欧美日韩| 最新欧美人z0oozo0| 国产成人强伦免费视频网站| 国产精品久久久久久久岛一牛影视| 波多野结衣mp4| 亚洲欧美综合区自拍另类| 亚洲天堂免费电影| 久久资源亚洲| 午夜在线一区| 日韩精品卡通动漫网站| 日韩欧美在线字幕| 欧美婷婷久久五月精品三区| 日韩av电影中文字幕| 亚洲欧洲美洲国产香蕉| wwwxxx黄色片| 国产欧美日韩久久| 中文字幕一区二区三区人妻四季| 在线视频中文亚洲| 先锋影音一区二区| 中文字幕一区综合| 国产乱码精品一区二区三区av| 日本人亚洲人jjzzjjz| 欧美福利视频导航| 日本动漫同人动漫在线观看| 国产99在线免费| 国产亚洲精品v| 久久久久亚洲av无码a片| 欧美无砖砖区免费| 美女羞羞视频在线观看| 国产美女久久久| 一区二区三区网站| 亚洲欧美高清在线| 欧美视频第一页| 91精品专区| 亚洲最大福利网站| 国产日韩免费| 黑人と日本人の交わりビデオ| 欧美精品日韩精品| 黄色污网站在线观看| 日韩久久在线| 国产经典欧美精品| 天天操夜夜操视频| 色偷偷av一区二区三区| 57pao国产一区二区| 欧美色图另类小说| 国产精品久久久久久久久免费桃花 | 国产一级做a爱免费视频| 日韩激情视频在线播放| 高清在线一区| 成品人视频ww入口| 国产欧美精品区一区二区三区| 国产精品丝袜黑色高跟鞋| 国模吧一区二区| 欧美成免费一区二区视频| 成人字幕网zmw| 草草视频在线| 亚洲欧洲另类精品久久综合| 国产传媒久久文化传媒| 欧美一区免费看| 免费av在线一区| 精品视频免费| 国产情侣久久久久aⅴ免费| 欧美视频一区在线| h片视频在线观看| 日韩第一页在线观看| 久久综合色鬼综合色| 国产偷拍一区二区| 国产精品日韩av|