Java Web 中的入侵检测及简单实现
来源:中文 java 技术网
在 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;