网页验证码的研究与实现
2016-02-06黄玲娜
◆黄玲娜
(无锡城市职业技术学院 江苏 214000)
网页验证码的研究与实现
◆黄玲娜
(无锡城市职业技术学院 江苏 214000)
随着计算机通信技术的日趋成熟,网络与人们的关系愈加密切,网络安全问题越来越被人们所重视。网页验证码是一种常用的网络安全技术,可以有效防止不法分子非法大量注册网站账号,保障网站的正常运转,提高网站系统的安全性和可靠性。本文介绍了网页验证码的基本工作原理,并用PHP技术实现了在网页注册登录界面通过验证码验证用户的功能。
PHP;验证码;网络安全
0 引言
在计算机网络高速发展的今天,网络安全问题越来越被人们所重视。大部分的网站都采用了会员登录制,必须首先注册成为会员后才能正常使用网站的各项功能(如BBS论坛、电子商务网站等)。但是总有那么一些不法分子利用网站在设计上的漏洞批量注册账号用以论坛灌水、刷信誉、反复享受网站的各项优惠政策,这些行为给普通用户和网站管理者带来了极大的烦恼。针对这一现象,各项安全技术孕育而生,验证码是其中最为常见的一种技术。
验证码是防范网络上有人利用机器自动批量注册、暴力破解密码的一种安全措施,它可以甄别访问者是个人用户还是机器。从技术上看,验证码其实是服务器端随机生成的一串字符,它一般直接显示在网页上,由浏览器端用户肉眼识别字符信息,输入表单后提交到网站服务器验证,验证成功后才能继续访问网页[1]。验证码的实现方法很多,PHP技术是目前常用的网站开发环境,使用这种技术能方便、快速有效地实现验证码功能,增强网站的安全性和可靠性。
1 关键技术分析
验证码技术原理是:在每次向网页提交信息的时候,系统会自动随机产生一串数字或符号(即验证码),只有在指定的地方正确输入这些验证码才能成功提交信息[2]。
验证码的形式很多,有数字验证码、图形验证码、文字验证码。利用图像处理技术创建的验证码更加丰富多彩,要利用该技术必须首先在PHP技术中加载GD库以及完成Jpgraph的安装和配置。
1.1 GD库和Jpgraph绘图组件
GD库是一个开放的、动态创建图像的、源代码公开的函数库,用于对图像的处理。GD库在PHP中是默认安装的,但要激活GD库,需要设置php.ini文件[3]。将文件中的“;extension=php_gd2.dll”选项前的分号删除后保存并重新启动Apache,加载成功后可以使用phpinfo()函数查看GD函数库的信息,从而验证该函数库是否加载成功。
Jpgraph是一个强大的绘图组件,可以根据用户提供的数据调用绘图函数在页面上绘制各种图形,Jpgraph组件的运行需要GD库的支持,使用Jpgraph组件和GD库就可以实现丰富多彩的图形图像。而在产生验证码过程中,给验证码添加彩色背景比呆板的纯数字验证码更加美观,更能引起用户的关注。
1.2 Smarty模板
Smarty模板是PHP项目开发的常用模板,可以实现网页代码控制和页面美工分离,从而使得开发过程更加清晰明了,也利于项目后期的修改和完善。而且Smarty运行速度极快;效率高;模板只需被解析一次,无需重复[4],正是由于Smarty模板的高效性以及合理的开发模式,使得Smarty模板在网站开发过程中成为开发人员的有力臂膀。
2 验证码技术实现
2.1 在PHP文件中利用GD函数生成验证码
为了给验证码添加如下图所示的随机背景,可以使用GD函数库中的Imagecreate()函数创建一个画布,使用mt_rand()函数随机生成验证数字的字体、位置、颜色,这样不仅可以使页面每次刷新后都能显示不同样式的验证码,而且也可以有效的防止对网站的恶意攻击。
图1 随机背景
产生验证码的核心文件yzm.php如下所示: