基于Web的图形验证码技术的研究的方式分析
互联网技术的高速发展带来了现代社会飞速进步和信息技术日新月异,Web服务变的无处不在,伴随而来的就是Web系统的安全性问题,尤其是以.NET技术为代表的新兴Web开发技术的兴起,基于B/S架构的Web服务在互联信息领域得到了前所未有的广泛应用,图形验证码技术的出现正是加强web系统安全的产物,实现对后台数据的防护。
1 实现原理
1.1 图形验证码
验证码,其英文名称叫 CAPTCHA,是 Completely Automated Public TuringTest to Tell Computers and Humans Apart(全自动区分计算机和人类的图灵测试)的简称。CAPTCHA实质是区分计算机和人类的一种程序算法,这种程序能生成人类能很容易通过但计算机却通不过的测试,这意味着一个 CAPTCHA必须能生成一个它自己不能通过的测试。一般上来说,我们理解的验证码就是指包含有一串数字或其它字符的一幅图片,图片里加上一些干扰像素,在用户浏览网页时显示出来,经过终端用户肉眼识别后,将其中的附加码信息连同用户名和密码一起输入到Web 表单提交Web 系统验证,验证成功后才能使用某项功能。
1.2 验证码的作用
设计合理的验证码可在很大程度上起到加强 B/S结构的 web系统安全的作用。第一,可以防止对网站的大量恶意注册、论坛灌水、垃圾信息回复及发布等等;第二,可以有效的防止暴力破解密码,即用无穷列举的方法尝试用户名或密码,这样该算法就会以非常快的速度排列组合事先定义好的数据字典里所列出的可能字符以各种既定规则去尝试密码;第三,可以有效防止对网站的恶意攻击。Web网站经常会受到合法客户机的恶意攻击,攻击者们利用装载了恶意代码的合法网页来植入按键记录器,当合法用户登录时,就从中窃取用户密码,或者将计算机引向代理服务器进行其他攻击。
1.3 验证码的session机制
2 基本图形验证码的技术实现及探讨
基于演示的方便性角度考虑,本设计采用四个字符的验证码,并且仅使用26个英文字母(包括大小写)和0-9的阿拉伯数字组合,同时通过给不同的像素点附上不同的颜色,从而构建出彩色验证码。另外,为最大程度防止验证码被识别软件分割和匹配识别,设计中适当的增加验证码中的干扰因素,如增加干扰像素点、增加随机彩色干扰线等。
2.1 功能模块实现
1)界面模块 ():实现填写验证码的登录界面。
2)验证码载入模块 ():通过 drawimage()函数将最终生成的验证码回传到网页上,形成最终用户看到的效果界面,以供用户识别并填入验证。
3)验证字符随机生成模块 Rndchar():实现验证码字符的随机生成,用字符串变量来存储字符集。
4)输入验证图片模块:将验证码设置为通用的4位字符,并在每次网页发送到客户端浏览器前,将验证码存贮到服务器端的“session”里面,以便和用户的填入结果做比对,验证用户的合法性。
5)生成验证图片模块:实现对验证码图片大小背景颜色初始化,
6)给代码添加干扰因素模块。
① 添加随机噪点,这里的噪点就是随机出现的像素块,起到干扰图片上面字符的作用。
基本的图形验证码实现了随机生成字符,并具有一定的反识别能力,但随着字符识别技术的进步,对验证码的识别破解技术也发展的非常迅速,目前比较流行的是 OCR识别技术。所谓 OCR识别,即光学字符识别(Optical Character Recognition,简称OCR),简而言之就是用计算机自动辨识印刷在纸上和人写在纸(或介质)上的文字。通常根据不同的技术策略,识别方法可以分为基于统计特征的字符识别技术、基于结构特征的字符识别技术和基于神经网的识别技术。
3 改进型的图形验证码设计分析
为了设计更安全可靠的图形验证码,掌握识别验证码的一般流程就尤为重要。通常的验证码识别流程如图4所示。
4 总结和展望
图形验证码从开始出现到今天已有几十年的历史了,但真正开始进入应用也不过才10年。在这十年中,图形验证码从最初的仅仅几个标准字符发展到现在各种各样的扭曲变形、粘结,这期间信息水平的进步不言而喻,图形验证码技术作为一种经济安全的数据库保护技术必将得到更为广泛的应用。
参考文献:
[1] 坤燕昌,曾大海.浅析验证码在 B/S系统安全性中的应用[J].西昌学院学报,2005,19(3):79-80.
.Proeeedings of IEEE,1992,80(7):1029-1058.
[3] 李颖.验证码的生成与识别[D].南京:南京理工大学,2008.
[4] 张振会,尹绍宏.基于 Servlet的图形验证码研究与实现[J].仪器仪表用户,2009(1):99-100.
[5] 李倩.文档图像的二值化算法综述[J].中国传媒大学学报:自然科学版.2008(4):66-70.
.南京:南京理工大学,2007.
[7] 何培舟,温向明,郑伟.子图验证码[J].计算机系统应用,2008(8):10-15.