论文部分内容阅读
【摘 要】本文介绍验证码在网络安全应用中的作用和意义,分析了其优点和弊端,结合实际应用,对验证码的工作原理进行了分析。
【关键词】验证码 字符校验 Servlet Struts
随着计算机技术与Internet的高速发展,渗透到各行各业的速度越来越快,人们逐渐意识网络安全及验证码的重要性。认识到利用验证码可以有效防止某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试。验证码技术被广泛用于各行各业之中:如网站注册会员、邮箱登录系统、银行网银系统、聊天工具、论坛回帖等。
一、验证码的作用和意义
WEB站有时会碰到客户机恶意攻击,其中一种很常见的攻击手段就是身份欺骗,其通过在客户端脚本写入一些代码,然后利用其客户机在网站、论坛反复登陆,或者攻击者创建一个HTML窗体,其窗体如果包含了注册窗体或发帖窗体等相同的字段,可利用“http-post”传输数据到服务器,服务器会执行相应的创建账户、提交垃圾数据等操作。如果服务器本身不能有效验证并拒绝非法操作,将会很严重耗费其系统资源,降低网站性能甚至使程序崩溃。
而现在流行的判断访问WEB程序是合法用户还是恶意操作的方式,采用一种叫 “字符校验”的技术。系统为客户提供一个包含随机字符串的图片,用户必须读取这些字符串,然后随登陆窗体或者发帖窗体等用户创建的窗体一起提交。因为人工可以很容易识别图片中的数字,但如果是一段客户端攻击代码,通过一般手段是很难识别验证码的,这样可以确保当前访问是来自一个人而非机器。
目前绝大多数的网站为了防止用户利用机器人自动注册、登录、灌水,都采用了验证码技术。有效防止某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试的这种问题。实际上是用验证码是现在很多网站通行的方式,我们利用比较简易的方式实现了这个功能。虽然登陆麻烦一点,但是对社区来说这个功能还是很有必要,也很重要。但我们还是提醒大家主要保护自己的密码,尽量使用混杂了数字、字母、符号在内的6位以上密码,不要使用诸如1234之类的简单密码或者与用户名相同、类似的密码。不要随意设置密码,保护你自己的密码也是保护你自己,免得你的账号给人盗用给自己带来不必要的麻烦。
二、验证码在网站中的应用
验证码实际上就是随机选择一些字符以图片的形式展现在页面上,进行提交操作的同时需要将图片上的字符同时提交,假如提交的字符与服务器session保存的不同,则认为提交信息无效。为了避免自动程序分析解析图片,图片里加上一些干扰象素(防止OCR),在图片上随机生成一些干扰线或者将字符进行扭曲,增加自动识别的难度。由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。
三、验证码的优点和弊端
优点:防止某些别有用心的用户利用机器人(恶意程序)自动注册、自动登录、恶意灌水、恶意增加数据库访问、用特定程序暴力破解密码,对网络安全起到保护作用。
弊端:网站应用验证码后,将增大服务器压力,具体表现在两个方面。一是因为生成验证码时使用了许多的算法,生成验证码过程中会占用服务器CPU时间,二是应用Session会消耗服务器内存。所以,并不是在网站中到处都用,目前主要是在重要表单提交时使用。
四、验证码的原理分析
浏览器应用HTML标准与网站服务器动态联系,在HTML的表单中,基本上都是使用指定有Action的POST方法。如果不应用验证码方法,将很容易被一些别有用心的人利用机器人程序或者盗用Action的恶意程序,实现其个人勾当。应用验证码技术后,可以保护你的服务器,防止这一问题的发生。
应用验证码技术后,表单上将多出一个验证码文本框输入项目,并且表单上的某个位置还显示有一个图片,这个图片是由一些可由人工识读的数字和字符组成的。这是应用验证码技术后的前台特征。后台特征是,服务器在生成验证码图片的时候,以Session或者其它方式在服务器端保存验证码的明文字符串。
用户在输入表单内容的时候,还要求用户识读表单上的这个的验证码图片并将识读结果输入到验证码文本框内。当服务器收到这樣的表单后,首先将用户提交的验证码与Session值进行比较,根据比较结果判断用户是否为合法使用网站功能。
当用户加载登录页面的同时,发送一个请求给Servlet产生随机的验证码图片,Servlet中产生4个数字与字母(也可以用中文字符实现)随机组合的验证码,存放到request的Session中并在登录页面以图片的形式显示在页面中,当用户填完登录信息提交时,由Struts的Action从用户的请求中获得用户在界面上输入的验证码,并与session中的验证码进行比对,如果两者不一致则返回到登录界面,并刷新验证码,如果两者一致则继续进行后续的其它验证(验证用户输入的用户名以及密码是否与数据库中的记录相吻合)。当用户在界面看到的验证码不清晰,可以重复单击刷新验证码,直到看到清晰的图片为止,刷新验证码图片是通过页面JavaScript脚本控制的,其实就是重新发送一次请求给Servlet,重新产生随机验证码并更换Session中的旧验证码。
五、结束语
在现在的软件运行环境下,安全成为大部分软件必须考虑的问题,黑客无处不在,攻击方式日益丰富,尤其是WEB系统由于其开放性更是遇到严峻的考验,黑客事件层出不穷,造成的损失和影响也不断变大。因而我们软件开发人员需要对此有相当的认识,并采取措施抵御各种黑客攻击。
参考文献:
[1] 郝玉龙.尹建平编著.JavaEE Web开发实例精解.清华大学出版社,2008
[2] 刘乃丽编著.精通JavaEE项目案例:基于Eclipse Spring Struts Hibernate.人民邮电出版社,2008
[3] BrianBaker. 无线网络安全. 科学出版社,2009
[4] 斯托林斯. 密码编码学与网络安全. 电子工业出版社,2012
[5]李瑞民. 黑客大曝光:无线网络安全. 机械工业出版社,2012
【关键词】验证码 字符校验 Servlet Struts
随着计算机技术与Internet的高速发展,渗透到各行各业的速度越来越快,人们逐渐意识网络安全及验证码的重要性。认识到利用验证码可以有效防止某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试。验证码技术被广泛用于各行各业之中:如网站注册会员、邮箱登录系统、银行网银系统、聊天工具、论坛回帖等。
一、验证码的作用和意义
WEB站有时会碰到客户机恶意攻击,其中一种很常见的攻击手段就是身份欺骗,其通过在客户端脚本写入一些代码,然后利用其客户机在网站、论坛反复登陆,或者攻击者创建一个HTML窗体,其窗体如果包含了注册窗体或发帖窗体等相同的字段,可利用“http-post”传输数据到服务器,服务器会执行相应的创建账户、提交垃圾数据等操作。如果服务器本身不能有效验证并拒绝非法操作,将会很严重耗费其系统资源,降低网站性能甚至使程序崩溃。
而现在流行的判断访问WEB程序是合法用户还是恶意操作的方式,采用一种叫 “字符校验”的技术。系统为客户提供一个包含随机字符串的图片,用户必须读取这些字符串,然后随登陆窗体或者发帖窗体等用户创建的窗体一起提交。因为人工可以很容易识别图片中的数字,但如果是一段客户端攻击代码,通过一般手段是很难识别验证码的,这样可以确保当前访问是来自一个人而非机器。
目前绝大多数的网站为了防止用户利用机器人自动注册、登录、灌水,都采用了验证码技术。有效防止某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试的这种问题。实际上是用验证码是现在很多网站通行的方式,我们利用比较简易的方式实现了这个功能。虽然登陆麻烦一点,但是对社区来说这个功能还是很有必要,也很重要。但我们还是提醒大家主要保护自己的密码,尽量使用混杂了数字、字母、符号在内的6位以上密码,不要使用诸如1234之类的简单密码或者与用户名相同、类似的密码。不要随意设置密码,保护你自己的密码也是保护你自己,免得你的账号给人盗用给自己带来不必要的麻烦。
二、验证码在网站中的应用
验证码实际上就是随机选择一些字符以图片的形式展现在页面上,进行提交操作的同时需要将图片上的字符同时提交,假如提交的字符与服务器session保存的不同,则认为提交信息无效。为了避免自动程序分析解析图片,图片里加上一些干扰象素(防止OCR),在图片上随机生成一些干扰线或者将字符进行扭曲,增加自动识别的难度。由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。
三、验证码的优点和弊端
优点:防止某些别有用心的用户利用机器人(恶意程序)自动注册、自动登录、恶意灌水、恶意增加数据库访问、用特定程序暴力破解密码,对网络安全起到保护作用。
弊端:网站应用验证码后,将增大服务器压力,具体表现在两个方面。一是因为生成验证码时使用了许多的算法,生成验证码过程中会占用服务器CPU时间,二是应用Session会消耗服务器内存。所以,并不是在网站中到处都用,目前主要是在重要表单提交时使用。
四、验证码的原理分析
浏览器应用HTML标准与网站服务器动态联系,在HTML的表单中,基本上都是使用指定有Action的POST方法。如果不应用验证码方法,将很容易被一些别有用心的人利用机器人程序或者盗用Action的恶意程序,实现其个人勾当。应用验证码技术后,可以保护你的服务器,防止这一问题的发生。
应用验证码技术后,表单上将多出一个验证码文本框输入项目,并且表单上的某个位置还显示有一个图片,这个图片是由一些可由人工识读的数字和字符组成的。这是应用验证码技术后的前台特征。后台特征是,服务器在生成验证码图片的时候,以Session或者其它方式在服务器端保存验证码的明文字符串。
用户在输入表单内容的时候,还要求用户识读表单上的这个的验证码图片并将识读结果输入到验证码文本框内。当服务器收到这樣的表单后,首先将用户提交的验证码与Session值进行比较,根据比较结果判断用户是否为合法使用网站功能。
当用户加载登录页面的同时,发送一个请求给Servlet产生随机的验证码图片,Servlet中产生4个数字与字母(也可以用中文字符实现)随机组合的验证码,存放到request的Session中并在登录页面以图片的形式显示在页面中,当用户填完登录信息提交时,由Struts的Action从用户的请求中获得用户在界面上输入的验证码,并与session中的验证码进行比对,如果两者不一致则返回到登录界面,并刷新验证码,如果两者一致则继续进行后续的其它验证(验证用户输入的用户名以及密码是否与数据库中的记录相吻合)。当用户在界面看到的验证码不清晰,可以重复单击刷新验证码,直到看到清晰的图片为止,刷新验证码图片是通过页面JavaScript脚本控制的,其实就是重新发送一次请求给Servlet,重新产生随机验证码并更换Session中的旧验证码。
五、结束语
在现在的软件运行环境下,安全成为大部分软件必须考虑的问题,黑客无处不在,攻击方式日益丰富,尤其是WEB系统由于其开放性更是遇到严峻的考验,黑客事件层出不穷,造成的损失和影响也不断变大。因而我们软件开发人员需要对此有相当的认识,并采取措施抵御各种黑客攻击。
参考文献:
[1] 郝玉龙.尹建平编著.JavaEE Web开发实例精解.清华大学出版社,2008
[2] 刘乃丽编著.精通JavaEE项目案例:基于Eclipse Spring Struts Hibernate.人民邮电出版社,2008
[3] BrianBaker. 无线网络安全. 科学出版社,2009
[4] 斯托林斯. 密码编码学与网络安全. 电子工业出版社,2012
[5]李瑞民. 黑客大曝光:无线网络安全. 机械工业出版社,2012