国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

java教程:網站開發中的入侵問題檢測

2024-07-14 08:44:01
字體:
來源:轉載
供稿:網友

  一、簡介

  在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應用中(如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;

  }

  }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 上高县| 顺昌县| 沁阳市| 遂平县| 长治市| 鹿邑县| 安庆市| 西畴县| 承德市| 清新县| 改则县| 定兴县| 铜山县| 涟水县| 余干县| 乳山市| 瑞金市| 凌源市| 韩城市| 麻江县| 将乐县| 洞头县| 晋中市| 甘孜县| 临汾市| 龙南县| 文昌市| 富宁县| 武山县| 深圳市| 黄冈市| 滨州市| 东明县| 吕梁市| 阿拉尔市| 贡觉县| 泰宁县| 荆州市| 隆德县| 新河县| 新巴尔虎左旗|