验证码基础
一.什么是验证码及它的作用
:验证码为全自动区分计算机和人类的图灵测试的缩写,是一种区分用户是计算机的公共全自动程序,这个问题可以由计算机生成并评判,但是必须只有人类才能解答.可以防止恶意破解密码、刷票、论坛灌水、有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录。
二.图文验证码的原理
:在servlet中随机生成一个指定位置的验证码,一般为四位,然后把该验证码保存到session中.在通过Java的绘图类以图片的形式输出该验证码。为了增加验证码的安全级别,可以输出图片的同时输出干扰线,最后在用户提交数据的时候,在服务器端将用户提交的验证码和Session保存的验证码进行比较。
三.验证码所需的技术
:i.因为验证码中的文字,数字,应为都是可变的,故要用到随机生成数技术。
ii.如果验证码中包含汉字,则要用到汉字生成技术.
iii.可以使用Ajax技术实现局部刷新
iv.可以使用图片的缩放和旋转技术,
vi.随机绘制干扰线(可以是折现,直线等)
vii.如果考虑到验证码的安全性,可以使用MD5加密.
验证码模块实例
1.编写生成英文,数字,汉字随机生成的Servlet类.源代码如下:
2.配置Servlet
在web.xml中的配置如下:
3.测试验证码
可以编写JSP页面来验证是否可以输出验证码图片,JSP代码如下:
1.index.jsp:显示界面
1 <%@ page language="java" import="java.util.*" pageEncoding="gbk"%> 2 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 4 <html> 5 <head> 6 <title>验证码</title> 7 <script language="javascript"> 8 function myReload() { 9 document.getElementById("CreateCheckCode").src = document 10 .getElementById("CreateCheckCode").src 11 + "?nocache=" + new Date().getTime(); 12 } 13 </script> 14 </head> 15 16 <body> 17 <form action="Check.jsp" method="post"> 18 <input name="checkCode" type="text" id="checkCode" title="验证码区分大小写" 19 size="8" ,maxlength="4" /> 20 <img src="PictureCheckCode" id="CreateCheckCode" align="middle"> 21 <a href="" onclick="myReload()"> 看不清,换一个</a> 22 <input type="submit" value="提交" /> 23 </form> 24 </body> 25 </html>
2.Check.jsp :主要验证提交的数据是否和Session中保存的验证码是否相同
4.工程项目结构,及运行截图