验证码是怎样生成

验证码是怎样生成

ID:37894779

大小:273.33 KB

页数:8页

时间:2019-06-02

验证码是怎样生成_第1页
验证码是怎样生成_第2页
验证码是怎样生成_第3页
验证码是怎样生成_第4页
验证码是怎样生成_第5页
资源描述:

《验证码是怎样生成》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、ChinaSEI系列讲义(By郭克华)验证码是怎样生成的如果有文字等小错,请多包涵。在不盈利的情况下,欢迎免费传播。版权所有.郭克华本讲义经过修正、扩充,由清华大学出版社出版。详细可查询http://www.china-pub.com/51834http://product.dangdang.com/product.aspx?product_id=208624691使用JSP验证码1.1为什么需要验证码为什么需要验证码呢?首先来看下面这张图片,如图1所示:图1含有验证码的表单上面是某系统的登录页面。从页面上可以看出,似乎可以通过账号和密码来进行验证,但是,页面上出现了一个新的输

2、入项:验证码。验证码有什么作用呢?假想该系统没有验证码,直接通过用户名和密码登录,那么就有可能有恶意的用户不停输入用户名和密码进行登录试探,或者他使用一个输入程序(俗称机器人程序)不停登录,有理由相信总有一天他是能够破解密码的,就可以使用别人的账号了。或者即使他没有破解,只是不停的在登录,服务器每次都会验证数据库,也会严重的降低服务器的效率,导致其他人不能使用。但是有了验证码之后,就可以避免这种现象。如图2所示:图2验证码因为每登录一次服务器,客户都需要提供一次验证码,而验证码每次都是不同的。所以很难使用机器人程序反复登录,因为机器人程序无法认识验证码。这就是验证码强大的功能所

3、在。所谓验证码,就是由服务器产生的一串随机数字或符号,形成一幅图片,图片应该传给客户端,为了防止客户端用一些程序来进行自动识别,图片中通常要加上一些干扰象素,由用户肉眼识别其中的验证码信息。客户输入表单提交时,验证码也提交给网站服务器,只有验证成功,才能执行实际的数据库操作验证码在网络投票、交友论坛、网上商城等业务中,经常用来防止恶意客户侵入、恶意灌水、刷票等,在Web中有着重要的应用。11.2验证码原理验证码为什么可以防止对网站的恶意访问呢?首先介绍验证码必须满足以下几个性质:1.不同的请求,得到的验证码应该是随机的,或者是无法预知的,必须由服务器端产生。2.验证码必须通过人

4、眼识别,而通过图像编程的方法编写的机器人程序在客户端运行,几乎无法识别。这就是验证码都比较歪斜或者模糊的原因,否则就很容易通过图像处理算法来识别。3.除了人眼观察之外,客户端无法通过其他手段获取验证码信息。这就是验证码为什么用图片,而不是直接用一个数字文本在页面上显示的原因,因为客户端可能通过访问网页源代码的方式获取验证码的内容。最初的验证码,只是几个随机生成的数字。但是很快就有能识别数字的软件了;目前常见的验证码是随机数字(有的系统也用随机文字)图片验证码,不过,目前也正在研究对验证码的识别。验证码的工作流程如下:1.服务器端随机生成验证码字符串,保存在内存中,并写入图片,将

5、图片连同表单发给客户端。2.客户端输入验证码,并提交给表单,服务器端获取客户提交的验证码,和前面产生的的随机数字相比较;如果相同,则继续进行表单所描述的操作(如登录、注册等);如果不同,直接将错误信息返回给客户端。避免程序的继续运行以及访问数据库。3.系统生成的一个随机数,大多为数字和字母,或者是数字和字母的组合,然后生成一张根据随机数来确定的图片,把随机数写入到session中,传递到要验证的页面;生成的图片显示给客户端,并要求客户端输入该随机数内容,提交到验证页面,验证session的内容和提交的内容是否一致。2验证码开发2.1在JSP上实现验证码在JSP上开发验证码步骤如

6、下:1.实例化java.awt.image.BufferedImage类。它的作用是访问图像数据缓冲区,或者说就是对所要绘的图片对象进行访问。BufferedImageimage=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);width、height表示的是产生图片的大小,BufferedImage.TYPE_INT_RGB是指使用的颜色模式为RGB模式(具体其他模式读者可以自己去了解)。2.从BufferedImange中获取Graphics类对象(画笔),并设定相关属性。Graphicsg=image.g

7、etGraphics();Graphics提供了对几何形状、坐标转换、颜色管理和文本布局更为复杂的控制。g.setColor(Colorcolor);//设置颜色g.fillRect(int,int,int,int);//设置生成的图片为长方形3.产生随机数,并将其存入session中。2//产生随机数Randomrnd=newRandom();intrandNum=rnd.nextInt()+1000;StringrandStr=String.valueOf(randNum);sessio

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。