为了对付暴力破解登录密码,在用户注册或者登录的时候采用输入验证码被普遍采用。生成验证码的方法有很多,这里仅介绍生成数字验证码的思路及实现方法。(以下程序语言均为VBS)
数字验证码一般由随机数生成,也可以由时间生成,例如分别取分、秒、毫秒,但笔者认为其安全性不及前者。
1、验证码的生成程序(采用随机数方式)
[FileName]:getverifycode.asp
[Code]:<%
dim getrandom
Randomize '设置随机因子
getrandom=mid((rnd*100000),1,4) '生成6位随机数,取高4位
Session("verifycode")=getrandom '保存于Session中
%>
把该文件使用include嵌套于要显示验证码的页面上。把生成的验证码存放于Session中的作用是在提交数据后,在验证页面读取用户输入的值与该值相比较,如果吻合则证明其数据来源合法,可进行下一步操作。
2、验证码的生成程序
随机数生成后,可通过两种方法显示,一种是直接显示,另外一种是图片显示。以下着重介绍图片显示方法。首先我们要用绘图软件制作内容分别为数字0~9的图片共10张,分别取名为1.gif、2.gif……,以此类推。制作完毕后我们就可以着手编写代码了。代码如下:
[Code]:<img src=http://www.163design.net/a/y/"images/<%=mid(Session("verifycode"),1,1)%>.gif" width="15" height="15" alt="">
<img src=http://www.163design.net/a/y/"images/<%=mid(Session("verifycode"),2,1)%>.gif" width="15" height="15" alt="">
<img src=http://www.163design.net/a/y/"images/<%=mid(Session("verifycode"),3,1)%>.gif" width="15" height="15" alt="">
<img src=http://www.163design.net/a/y/"images/<%=mid(Session("verifycode"),4,1)%>.gif" width="15" height="15" alt="">
同时,我们要在表单中插入一个验证码输入框,以便用户按照显示的验证码进行输入。
3、验证码的验证
用户输入了验证码及其它必须信息,提交之后,就要在接收数据页面进行相应的验证处理。过程比较简单,只要把用户输入的验证码与存放于Session中的相比较就可以了。代码如下:
[Code]:dim usercode
usercode=Request.Form("verifycode")
if usercode<>Session("verifycode") then
Response.Redirect("验证码不正确提示页面")
Response.End
else
(处理其他数据)
end if
至此,一个简单的验证码编写过程就完成了。本文有错误及不足之处,敬请指正。