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

淺析Java Web應用中的入侵檢測

開發 后端
Java Web應用程中我們有時候需要為應用程序增加一個入侵檢測程序來防止惡意刷新的功能,防止非法用戶不斷的往Web應用中重復發送數據。

一、簡介

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

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

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

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

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

EasyJWeb框架友情提示

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

詳細請查詢http://www.easyjf.com

二、用戶訪問信息記錄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的核心Servlet 

com.easyjf.web.ActionServlet中調用UserConnectManage的代碼:

if(!UserConnectManage.checkLoginValidate(request.getRemoteAddr(),"guest"))

{

info(request,response,new Exception("您對頁面的刷新太快,請等待"+UserConnectManage.getWaitInterval()/1000+"秒

后再刷新頁面!"));

return;

}

五、總結

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

【編輯推薦】

  1. Red Hat CEO呼吁甲骨文繼續保持Java開放
  2. 自學Javabean迅速成為Java高手
  3. Java通過JNI調用C語言的方法
  4. 高手Java核心技術學習筆記
  5. 成為Java高手需要注意的25個學習目標
責任編輯:王觀 來源: 賽迪網
相關推薦

2011-03-04 13:17:51

2009-03-23 10:04:46

Java Web入侵檢Java Web應用EasyJWeb

2009-09-04 10:21:00

2009-07-09 16:47:26

Servlet的Web

2022-05-10 11:23:56

漏洞補洞過程入侵檢測

2009-01-16 14:08:42

PHP開發Web應用執行效率

2011-12-29 15:35:39

Web

2010-08-26 10:12:54

2019-05-17 09:20:01

2009-12-17 17:31:10

2009-07-08 15:31:40

JDK 6.0web service

2011-12-30 16:30:39

Java

2010-08-30 09:50:34

2009-03-03 13:51:15

2011-08-12 11:36:07

2011-04-06 13:39:18

2012-07-09 10:21:30

2010-10-25 11:59:19

2010-09-09 23:06:34

2012-10-10 11:36:02

點贊
收藏

51CTO技術棧公眾號

懂色av成人一区二区三区| 久久精品亚洲a| 欧美va在线观看| 国产精品免费观看视频| 成人欧美视频在线| 免费无码国产精品| 欧美福利电影在线观看| 99国产精品久久久久久久成人| 亚洲国产专区校园欧美| 国产一级揄自揄精品视频| 999热精品视频| 午夜日韩成人影院| 亚洲一区二区三区激情| 日本视频一区二区不卡| 性生活黄色大片| 免费观看成人av| 国内免费久久久久久久久久久| 黄大色黄女片18免费| 极品束缚调教一区二区网站 | 亚洲欧美另类中文字幕| 在线免费看污网站| 浪潮色综合久久天堂| 一区2区3区在线看| 亚洲一区二区三区欧美| 视频在线不卡| 福利一区福利二区| 成人天堂噜噜噜| 综合久久中文字幕| 国产美女精品| 欧美激情在线观看视频| 乱老熟女一区二区三区| 久久99性xxx老妇胖精品| 精品日韩成人av| 国产一级免费大片| 第四色男人最爱上成人网| 亚洲成人你懂的| 国产一二三四区在线观看| 成人在线二区| 国产亚洲污的网站| 久久久水蜜桃| 神宫寺奈绪一区二区三区| 国产精品影音先锋| 成人免费视频网址| ,一级淫片a看免费| 久草在线在线精品观看| 国产精品劲爆视频| 综合网在线观看| 午夜在线视频一区二区区别| 韩剧1988在线观看免费完整版| 手机在线免费看毛片| 婷婷色综合网| 久久久国产视频| 国产一二三区精品| 亚洲色图国产| 欧美成人中文字幕| 久久久久97国产| 欧美日韩三区| 久久久久亚洲精品成人网小说| 麻豆视频在线观看| 亚洲午夜久久久久久尤物| 欧美人成在线视频| 久久影院一区二区| 日韩一区二区久久| 国产91色在线|免| 小泽玛利亚一区二区三区视频| 日韩精品久久久久久| 国产精品久久久久久亚洲影视| 在线免费a视频| 激情图片小说一区| 99porn视频在线| 日韩专区第一页| 国产亚洲一本大道中文在线| 一区二区三区四区国产| 26uuu亚洲电影在线观看| 一级中文字幕一区二区| 国产91xxx| 另类中文字幕国产精品| 欧美另类高清zo欧美| 国产精品久久久久野外| 欧美调教在线| 在线观看国产精品91| 日韩在线视频网址| 伊人激情综合| 国产精品精品久久久久久| 亚洲无码精品在线观看| 国产精品中文有码| 欧美高清性xxxxhdvideosex| 在线观看h片| 亚洲最大成人综合| 久久精品99国产| 成人在线啊v| 日韩第一页在线| 中文乱码字幕高清一区二区| 在线免费高清一区二区三区| 日韩美女在线观看| 国产视频第二页| 91香蕉视频mp4| 麻豆视频传媒入口| 欧美黑人巨大xxxxx| 欧美裸体一区二区三区| 黄色工厂在线观看| 亚洲欧美综合久久久| 欧美性受xxx| 国产免费黄色片| 久久久国际精品| 国产尤物av一区二区三区| 日韩色淫视频| 日韩激情av在线播放| 疯狂试爱三2浴室激情视频| 国产精品美女| 99久久精品免费看国产一区二区三区| 黄色免费在线播放| 亚洲成人激情av| 亚洲一区二区图片| 偷拍视屏一区| 欧美激情亚洲视频| 97精品人妻一区二区三区香蕉| 91日韩精品一区| 17c丨国产丨精品视频| 国产成人免费| 亚洲少妇中文在线| 国产在线观看免费视频今夜| 激情综合色综合久久综合| 日本精品一区二区| 国产传媒在线| 亚洲白虎美女被爆操| 强制高潮抽搐sm调教高h| 久久久久国产精品午夜一区| 国产精品一区二区av| 91高清在线观看视频| 欧美色电影在线| 亚洲一区二区三区日韩| 亚洲一区二区三区免费在线观看| www.久久艹| 超碰免费在线播放| 91 com成人网| 神马久久精品综合| 久久国产剧场电影| 亚洲一区二区不卡视频| 美女色狠狠久久| 夜夜躁日日躁狠狠久久88av| 男女啊啊啊视频| 91热门视频在线观看| www国产精品内射老熟女| 哺乳一区二区三区中文视频| 久久99久国产精品黄毛片入口| 一区不卡在线观看| 亚洲欧美在线另类| www.五月天色| 欧美日韩免费观看一区=区三区| 亚洲综合大片69999| 成年人黄视频在线观看| 日韩美女视频在线| 国产在线欧美在线| av电影天堂一区二区在线观看| 欧美一级欧美一级| 久久影视三级福利片| 97在线观看免费高清| 视频国产一区二区三区| 色94色欧美sute亚洲线路一久| 日韩乱码人妻无码中文字幕久久| 久久精品成人| 亚洲精品二区| 成人午夜888| 国内精品久久久久久| 亚洲av片一区二区三区| 色美美综合视频| 手机av在线不卡| 国内国产精品久久| 亚洲精品蜜桃久久久久久| 国产精品久久久网站| 7777免费精品视频| 电影av一区| 欧美一区二区视频在线观看| 亚洲国产精品成人无久久精品| 99久久免费视频.com| 成年人视频在线免费| 国产二区精品| 国产精品一区二区你懂得| 欧美天堂视频| 久久躁狠狠躁夜夜爽| 特黄aaaaaaaaa真人毛片| 色一区在线观看| 欧美性x x x| 99热精品国产| xxww在线观看| 狠狠色狠狠色综合日日tαg| 欧美另类一区| 99视频有精品高清视频| 91精品国产91久久久| 国产午夜在线观看| 日韩欧美黄色影院| 午夜久久久久久久久久影院| 亚洲精品国产精华液| 欧美大片免费播放器| 国产一区二区在线观看免费| 久久精品国产精品亚洲色婷婷| 我不卡手机影院| 欧美国产一区二区在线| 激情五月综合婷婷| 欧美在线观看日本一区| av软件在线观看| 国产一区二区三区在线观看视频| 性生活黄色大片| 欧美日韩一区高清| 精品国产免费观看| 亚洲精品亚洲人成人网 | 国产精品水嫩水嫩| 老司机午夜免费福利| 久99久精品视频免费观看| 国内性生活视频| 午夜亚洲福利| 亚洲成人第一| 色天下一区二区三区| 91麻豆精品秘密入口| 成人国产一区二区三区精品麻豆| 91精品国产九九九久久久亚洲| 中国av在线播放| 色婷婷综合成人| 黄色大片在线看| 日韩电影中文字幕一区| 亚洲精品国产suv一区| 欧美精品久久天天躁| 99成人精品视频| 色综合一区二区| 国产性xxxx高清| 亚洲国产精品一区二区尤物区| 久久精品日韩无码| 欧美国产激情一区二区三区蜜月| 在线免费观看黄色小视频| 成人av在线一区二区| 国产精品成人免费一区久久羞羞| 国产一区二区看久久| 艹b视频在线观看| 青青草97国产精品免费观看无弹窗版| 丰满人妻中伦妇伦精品app| 亚洲福利免费| 国产午夜福利100集发布| 狠狠干综合网| 久久久久久www| 亚洲人妖在线| av7777777| 久久国产直播| 国产精品乱码久久久久| 丝袜美腿成人在线| 97公开免费视频| 奇米影视7777精品一区二区| 久久国产色av免费观看| 久久aⅴ国产紧身牛仔裤| 亚洲熟妇av日韩熟妇在线| 亚洲三级色网| 日本日本19xxxⅹhd乱影响| 亚洲精品极品| 欧美私人情侣网站| 日韩福利视频网| 在线黄色免费观看| 国内精品伊人久久久久影院对白| 亚洲午夜精品一区| 国产成人免费视频网站| 国产精品久久AV无码| 91香蕉视频mp4| 无码人妻丰满熟妇啪啪欧美| 国产精品蜜臀av| 51精品免费网站| 一区二区三区不卡在线观看| 日韩成人在线免费视频| 色女孩综合影院| 91国偷自产中文字幕久久| 日韩欧美中文一区二区| 特黄aaaaaaaaa真人毛片| 亚洲天堂免费在线| 欧美jizz18性欧美| 九九热这里只有精品免费看| segui88久久综合9999| 国产精品91久久| 警花av一区二区三区| 国产一区免费观看| 精品一区av| 国产成人生活片| 一区二区三区导航| 色悠悠久久综合网| 成人综合在线视频| 9.1成人看片免费版| 日韩一区欧美一区| 日韩欧美a级片| 欧美日韩高清一区二区三区| 亚洲欧美激情另类| 国产一区二区三区四区福利| 欧美大胆的人体xxxx| 国产99久久精品一区二区永久免费 | 成人亚洲综合天堂| 欧美日韩国产二区| jizzyou欧美16| 国产精品免费一区二区| 波多野结衣的一区二区三区| 久久久天堂国产精品| 三级影片在线观看欧美日韩一区二区| 交换做爰国语对白| 久久女同互慰一区二区三区| tube国产麻豆| 欧洲中文字幕精品| 欧美特黄一级视频| 日韩中文字幕在线免费观看| 欧美另类老肥妇| 99porn视频在线| 日韩在线精品| 哪个网站能看毛片| 国产91精品一区二区麻豆网站| 中文字幕黄色网址| 午夜精品一区二区三区三上悠亚| 7777久久亚洲中文字幕| 国产午夜精品免费一区二区三区 | 成人精品视频99在线观看免费| 欧美大奶一区二区| 一本色道久久88亚洲精品综合| 日韩高清在线一区| 日韩精品卡通动漫网站| 亚洲一区二区中文在线| 一区二区三区亚洲视频| 亚洲香蕉成视频在线观看| 日韩激情电影| 国产伦精品一区二区三区视频免费 | 亚洲三级电影网站| 亚洲图片中文字幕| 亚洲人成网7777777国产| 蜜桃视频www网站在线观看| 99国产超薄肉色丝袜交足的后果| 91一区二区| 一区二区三区网址| 国产色91在线| 久久精品五月天| 亚洲欧洲视频在线| 校园春色亚洲| 快播日韩欧美| 午夜在线观看免费一区| 99久久久久久久久久| 欧美日韩激情视频8区| 天天干天天色天天| 韩日欧美一区二区| 精品嫩草影院| 久久国产精品视频在线观看| 不卡一区二区在线| 日韩精品乱码久久久久久| 亚洲成色777777在线观看影院| 国产经典三级在线| 国产三区二区一区久久| 亚洲性感美女99在线| 国产一级伦理片| 欧美午夜宅男影院在线观看| 日韩精品福利| 国产成人一区二区在线| 欧美美女视频| 日本免费色视频| 一区二区三区波多野结衣在线观看| 国产丰满美女做爰| 亚洲**2019国产| 最新亚洲精品| av污在线观看| 亚洲免费观看高清完整| 亚洲av少妇一区二区在线观看| 久久久视频在线| 久久99国内| 高潮一区二区三区| 亚洲一区在线观看免费观看电影高清| 黄色一级大片在线免费看国产| 97国产精品视频人人做人人爱| 久久93精品国产91久久综合| 鲁一鲁一鲁一鲁一av| 一区二区视频在线| 手机福利在线| 成人在线免费观看视视频| 欧美精选一区| 在线观看福利片| 欧美精品色综合| 678在线观看视频| 日韩免费电影一区二区| 国产一区二区福利视频| 日韩av免费网址| 中文一区二区视频| 97青娱国产盛宴精品视频| 日本精品免费在线观看| 国产精品乱码一区二区三区软件| 亚洲成人黄色片| 国产成人一区二区三区电影| 欧美二区视频| 亚洲国产天堂av| 日韩欧美成人激情| 日韩欧美一区二区三区免费观看| 大地资源第二页在线观看高清版| 99久久精品免费精品国产| 自拍偷拍精品视频| 国语自产精品视频在线看一大j8 | 亚洲av毛片成人精品| 国产日韩在线看片| 亚洲伦伦在线| 99精品中文字幕| 国产视频精品一区二区三区| 久久99成人| 美女黄色片视频| 精品国产91久久久久久老师|