APP下载

基于Struts框架的验证码的实现

2013-11-13蒋守花贺春林

科技视界 2013年7期
关键词:非关键清华大学出版社拦截器

蒋守花 贺春林

(西华师范大学 计算机学院,四川 南充 637009)

0 引言

随着计算机技术、网络技术的发展,网络安全逐渐得到了人们的重视,对于网站的营运者来说网络安全显得尤为重要。因为一旦受到外来的恶意攻击,网站就显得不那么安全、稳定了。为了防止恶意访问,验证码应运而生,它的诞生是为了防止客户机恶意攻击造成的系统资源浪费,网站性能降低甚至程序崩溃。

验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。验证码一般是防止有人利用机器人自动批量注册、对特定的注册用户用特定程序暴力破解方式进行不断的登陆、灌水。因为验证码是一个混合了数字或符号的图片,人眼看起来都费劲,机器识别起来就更困难。所以现在很多网站都采用了验证码技术。

1 Struts工作流程

Struts的工作流程简介如图1所示:

图1 Struts工作流程

1.1 浏览器发送请求,例如请求/mypage.action、/reports/myreport.pdf等。

1.2 Control中的核心控制器FilterDispatcher根据请求调用相应的业务逻辑控制器(Action)。

1.3 Struts的拦截器链自动对请求应用通用功能,如数据校验和文件上传等功能。

1.4 回调Action中的execute()方法,并在方法体内调用业务逻辑组件来处理请求(Model)。既可以是将数据保存到数据库,也可以从数据库中检索信息。实际上,因为Action只是一个控制器,它会调用业务逻辑组件来处理用户的请求。

1.5 execute()方法将调用业务逻辑组件(Model)得到的数据返还并更新视图层(View),可以是HTML页面、图像,也可以是PDF文档或者其他文档。此时支持的视图技术非常多,既支持JSP,也支持Velocity、FreeMarker等模板技术。

2 实现原理及实现过程

2.1 实现原理

当用户加载登录页面的时候,发送一个请求给servlet,使其产生一个随机的验证码图片,servlet中产生4个数字随机组合的验证码,存放到request的session中,并在登录页面上以图片的形式显示在页面中。当用户填完登录信息后,再跳转到验证码一行,系统就自动弹出验证码图片,用户填入图片中的数字方可登录,如果还有其他的信息请用户自行填入。如果在登录界面看到的验证码不清晰,请用户单击“换一张”刷新验证码,可重复刷新,直到看到清晰的图片为止,刷新验证码图片是通过页面javascript脚本控制的,其实质就是重新发送一次请求给servlet,系统产生新的随机验证码并更换session中的旧验证码。

2.2 实现过程

Login.jsp是登陆界面,验证码的图片要显示在这上面,在Chkcode.jsp是验证码生成的代码,里面有汉语注释,自己看。随机数字保存在yzkeyword里面。

在本实现过程中,JSP页面采用了Struts框架。

2.2.1 首先需要设计一个登录页面Login.jsp,主要源程序如下(非关键代码已省略):

整个实现比较简单,如图2所示:

图2 登录界面

2.2.2 Chkcode.jsp是验证码生成的代码,随机数字保存在yzkeyword里面。主要代码如下(非关键代码已省略):

2.2.3 在登陆界面,输入验证码点击登录,首先在web.xml里面遇到拦截器imageflater,在imageflater里面验证是否正确。

验证方式就是把存在yzkeyword里面的数据和你输入的验证码进行对比。正确就转下一个拦截器,不对,就返回错误到lgoin.jsp。

(1)拦截器imageflater.java的主要代码如下(非关键代码已省略):

(2)需要编写的配置文件有两个:web.xml和Struts-config.xml。在web.xml文件中配置当前web应用的相关配置;然后在Struts-config.xml文件中配置与当前web应用相关的struts配置。

3 结束语

本文主要介绍了基于Struts框架的验证码实现,实现过程中登录界面的设计,验证码图片还有拦截器都做得不够完美,还有待进一步研究。验证码的种类繁多,有字母验证码,数字与字母随机结合的验证码,但是本文只介绍了数字验证码这一种形式。证码技术随着网络技术的发展也会变得更加重要,所以本人还要更加努力的投身于这项技术的研究中。

[1]刘宝林.Java程序设计与案例[M].北京:高等教育出版社,2004.

[2]姜国海,赵小薇.Java应用案例分析[M].北京:清华大学出版社,2012.

[3]邹竹彪.Jsp网络编程从入门到精通[M].北京:清华大学出版社,2007.

[4]邱哲,王俊标,马斗.Struts Web设计与开发大全[M].北京:清华大学出版社,2006.

[5]高红岩.Struts实用开发指南:基于MVC+MyEclipse的Java Web应用开发[M].北京:科学出版社.

[6]罗玉玲.J2EE应用开发详解[M].北京:电子工业出版社.

猜你喜欢

非关键清华大学出版社拦截器
多动能拦截器协同制导规律的研究及仿真
英国MARSS公司推出新型反无人机拦截器
清华大学出版社期刊中心
考虑非关键线路影响的PERT网络计划完工概率分析
Desperate Love towards the Dark Lady in Shakespeare’s Sonnets
一种降低DRAM系统刷新功耗的混合主存设计
Translation and Dissemination of Critique of the Gotha Program in China in the Early Times〔* 〕
关键路径赢得值法在水利水电工程项目进度管理中的应用
基于AOP理念的Struts2拦截器的研究与应用