作者:EasyJF开源团队 大峡

一、简介

在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

*

*

Description:用于判断用户刷新情况检查,默认为10秒钟之内连续连接10次为超时

*

Copyright: Copyright (c) 2006

*

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=657199

java入侵检测源码_Java Web中的入侵检测及简单实现相关推荐

  1. Java绘画板源码_Java 绘图板 示例源码下载(画板)

    Java 绘图板 示例源码下载(画板) java 2020-8-21 下载地址 https://www.codedown123.com/36795.html package minidrawpad; ...

  2. java微博系统源码_JAVA仿微博系统(JAVA毕业设计含源码和运行教程)

    前言 课设毕设源码收集已上传到github,包括:C,C#,C++,JAVA,PHP 等源码,更多源码在整理中.地址:https://github.com/52JDK/Source-Collectio ...

  3. java 线程池 源码_java线程池源码分析

    我们在关闭线程池的时候会使用shutdown()和shutdownNow(),那么问题来了: 这两个方法又什么区别呢? 他们背后的原理是什么呢? 线程池中线程超过了coresize后会怎么操作呢? 为 ...

  4. java list addall源码_Java集合:ArrayList源码分析

    其实我看到已有很多大佬写过此类文章,并且写的也比较清晰明了,那我为何要再写一遍呢?其实也是为了加深本身的印象,巩固本身的基础html (主要是不少文章没有写出来我想知道的东西!!!​!!!!)java ...

  5. java开发利器 源码_Java开发的利器: 反编译工具 JD-GUI

    老赵说起来也能算个Java程序员,可是写过的Java代码并不多,可老赵实实在在是从程序员干起的.虽然肚子里也装了不少的东西,可作为一件乐此不疲的事情,就是看那些所谓"高人"的代码. ...

  6. java单机版软件源码_Java五子棋单机版源码分享

    初学JavaGUI编程,就写了一个小游戏–五子棋. 目前只实现了单机版,任何事情都是从简制作的,有问题请大牛们不吝指教啊. 此处的棋盘和棋子都未用图片,全部都是使用Java中的Graphics画出来的 ...

  7. java鱼游动源码_java版大鱼吃小鱼游戏

    [实例简介] java语言开发的简单的大鱼吃小鱼游戏,开发工具eclipse,直接将该工程导入即可运行,StartGame_Eatfish.java是开始游戏类,游戏中的声音是直接使用的第三方插件,在 ...

  8. java取网页源码_Java获取任意http网页源代码的方法

    本文实例讲述了JAVA获取任意http网页源代码.分享给大家供大家参考,具体如下: JAVA获取任意http网页源代码可实现如下功能: 1. 获取任意http网页的代码 2. 获取任意http网页去掉 ...

  9. java低层源码_Java线程池及其底层源码实现分析

    */ Callable接口 && Runnable接口 callable调用call方法 runnable调用run方法 都可以被线程调用,但callable的call方法具有返回值( ...

最新文章

  1. SpringMVC之Http标准的头部信息
  2. c语言线性表的逆转,数据结构(C语言)设有一个线性表E,将线性表逆置,要求逆线性表占? 爱问知识人...
  3. 无聊,写写工作日记吧.
  4. Hi3516A开发--ethtool安装和使用
  5. youcans 的 OpenCV 学习课—8.频率域图像滤波(上)
  6. python编程(改进的线程同步方式)
  7. oracle重建spfile,【11g】【10g】【实验】spfile文件的恢复(from memory;)
  8. lua mysql 字符串截取_Lua 截取字符串(截取utf-8格式字符串)
  9. Zend Studio IDE使用yii framework框架无代码提示的解决方法
  10. 算法:统计n以内素数个数--埃筛法
  11. CAD中如何裁剪需要的区域
  12. 樊登读书会-《关键对话》
  13. Jpress部署教程
  14. 使用nprobe+ntopng监控上百个路由器流量
  15. Vue 组件通信方式居然有这么多?你了解几种
  16. 力扣刷题:四数之和(C++)
  17. 如何通过抓包来获取数据API
  18. 《评人工智能如何走向新阶段》后记(再续17)
  19. 【知识图谱】知识图谱构建技术一览
  20. 制作app的网站的收藏

热门文章

  1. 读《与赛博空间共存》
  2. 首篇NLP领域图神经网络综述:127页,从图构建到实际应用面面观
  3. 字节跳动任命凯文·梅耶尔为首席运营官
  4. online learning的介绍
  5. [cocos2d-x] -- Cocos2d-x简介
  6. 张忠谋、蔡明介谈双通并购案,对台湾半导体产业链影响
  7. 蝙蝠侠与小丑:同一硬币的两面?
  8. STM32等精度频率计
  9. 苹果手机量体温_手机可以量体温?反派不能用 iPhone?我感觉我又长姿势了
  10. P1 | reference spur of SFB-PLL (JSSC-2013)