CGIweb界面下的多会话验证码的产生及验证方法

文档序号:7775050阅读:772来源:国知局
CGI web界面下的多会话验证码的产生及验证方法
【专利摘要】本发明公开了一种CGI?web界面下的多会话验证码的产生及验证方法。该方法是不同于其他系统的验证码的产生方式,本发明的验证码的产生是在CGI页面产生,在C++模块后台进行验证,所以安全性能好,并发处理能力强。此外,本发明是不同于其他系统的验证码的校验方式,其他系统只能去校验一组验证码,那么就会出现同时有多个用户请求的情况下会使验证码被覆盖,导致其中的一个或者多个用户的验证码校验错误,而本发明很好的解决了这个问题,不同的用户请求不同的验证码,他们是不相互依赖的。
【专利说明】CGI web界面下的多会话验证码的产生及验证方法
【技术领域】
[0001]本发明涉及网络应用领域,尤其涉及CGI web界面下的多会话验证码的产生及验证方法。
【背景技术】
[0002]验证码是位于用户登录的前后的一道验证技术,其作用是为了防止恶意破解密码、刷票、论坛灌水、刷页,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试,实际上使用验证码是现在很多网站通行的方式。虽然登录麻烦一点,但是对用户的密码安全来说这个功能还是很有必要,也很重要。但还是提醒大家要保护好自己的密码,尽量使用混杂了数字、字母、符号在内的6位以上密码,不要使用诸如1234之类的简单密码或者与用户名相同、类似的密码,免得你的账号被人盗用给自己带来不必要的麻烦。验证码通常使用一些线条和一些不规则的字符组成,主要作用是为了防止一些黑客把密码数据化登陆尝试从而让密码被盗取。
[0003]发明专利CN200810105458.8提供了一种网页表单数据验证的装置和方法。该装置包括:验证器管理模块,用于管理至少一个验证器,并维护验证器的标识和验证器之间的对应关系信息;脚本模块,用于接收生成脚本代码的调用请求,该调用请求中包含有网页表单的表单域信息,并根据该调用请求中包含的表单域信息,获取所述验证器管理模块所管理的验证器中与该网页表单中的表单域关联的验证器,通过调用该验证器获得用于客户端数据验证的脚本代码,将所述脚本代码输出,所述脚本代码用于客户端对所述表单域中的数据进行验证。利用本发明,减小客户端与服务器端的验证逻辑之间的不一致,从而减少系统出错的几率。该发明技术指出了在客户端进行验证,没有指明要在服务端后台进行验证,这样对于用户的安全的保护比较薄弱。
[0004]此外,发明专利CN200810173544.2提供了一种用于网页验证的系统,包含:认证模块,认证使用者识别码在系统中是否具独特性,且该使用者识别码与使用者身份相关;数据隐藏模块,根据数据隐藏算法,基于该使用者识别码、至少网页识别码与基本对象产生第一数据隐藏对象,每一个网页识别码与一个网页的识别相关连;内存模块,存储使用者识别码、网页识别码、基本对象、与数据隐藏算法所需参数的至少一个;及验证模块,基于一个网页识别码,从一个网页获取第一数据隐藏对象;基于该网页识别码,从内存模块获取使用者识别码与所有网页识别码;基于已获取的网页识别码、已获取的使用者识别码、基本对象,产生第二数据隐藏对象,比较该第一数据隐藏对象与第二数据隐藏对象。该发明的主要缺点是没有涉及到多会话的处理,以及处理验证码的时候的安全问题,这样它的性能和安全性可能不是很可靠。
[0005]综上可知现有的验证码中有一些还是存在安全性和多用户登陆时的问题。没有在后台验证输入的验证码,只是在页面进行简单的校验,存在了安全隐患;没有考虑多用户操作时验证码会被覆盖而导致验证码失效的问题,本发明就是为了解决这些方案的不足而提出的。
【发明内容】

[0006]本发明的目的是为了克服现有技术的缺陷,提供一种CGI web界面下的多会话验证码的产生及验证方法,使得并发性更强,验证码的验证功能更加安全,从而增强了系统的安全性。
[0007]本发明中验证码的产生方法为:
[0008]首先,页面由PERL编码的CGI界面展现生成,打开页面将会产生2项4位随机数和当前时间这三项作为一组验证码组保存到配置文件中,一项4位数用于生成图片验证码上的数字图片,另一项4位数用于唯一标识当前的页面。在这组验证码组保存过程中,会调用并传递页面生成的验证码组数据到由C++代码编写的后台保存模块,保存模块先根据验证码组保存时的当前时间项逐组检查以前的保存的验证码组的有效时间是否已经超时,默认每组验证码的有效时间是10分钟,如果某组验证码组的当前时间项已经超时则将已经超时的这一组验证码组的数据删除,然后再保存在页面获取到的一组验证码组到配置文件中,如果配置文件中的验证码组都没有超时,则直接保存页面生成的一组验证码组。验证码组保存完成后,将验证码组中的其中一项4位数作为验证码,生成图片验证码上的数字图案展现在页面,保存另一个4位数作为本页面的唯一标识隐藏,则验证码的产生完成。C++代码编写后台保存模块,主要是完成上述描述的保存过程,这样就实现了验证码的产生与保存。
[0009]本发明中验证码的验证方法为:
[0010]用户依据展现的页面上的验证码图片的数字输入相应的验证码,提交验证码的时候,用户首先判断输入的验证码与页面验证码图片显示的验证码数字是否一致,然后点登陆或者提交,页面就会把这个用户输入的四位验证码、此页面的唯一标识码及当前时间组成一个用户输入的验证码组传入后台,验证码的验证过程开始。验证过程如下:用户验证码组传入后台后,验证模块会首先检查保存验证码的配置文件中在当前时间是否有验证码已经超时过期,如果没过期,则与配置文件中的验证码进行遍历比对是否有与此传入的用户验证码组匹配的组,若匹配就验证成功,否则失败;如果有验证码过期,则删除掉过期的验证码,然后与配置文件中的验证码进行遍历比对是否有与此传入的验证码组匹配的组,若匹配就验证成功,否则失败。后台验证码的验证模块由C++实现,这样进行验证码的验证,使得验证过程更加安全,利用C++的特性,使得并发性更强,实现了多会话验证码的验证功倉泛。
[0011]本发明方法带来的有益效果:
[0012]本发明方法通过PERL编码的CGI WEB生成验证码及验证码图片,使用C++来支持多会话的验证码保存与验证功能,使得多个用户能够进行同时操作,解决了多个用户的同时登陆而导致的验证码覆盖或失效的问题,而且使用C++来实现多会话验证码支持,使得并发性更强,验证码的校验功能更加安全,从而增强了系统的安全性,防止非法用户绕过验证码的验证而实现登陆尝试或者攻击,其安全性有了大大的提高。
【专利附图】

【附图说明】
[0013]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0014]图1是本发明中验证码的产生流程图;
[0015]图2是本发明中验证码的验证流程图。
【具体实施方式】
[0016]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0017]本发明提供了一种CGI web界面下的多会话验证码的产生及验证方法,该方法是不同于其他系统的验证码的产生方式,本发明的验证码的产生是在CGI页面产生,在C++模块后台进行验证,所以安全性能好,并发处理能力强。此外,本发明是不同于其他系统的验证码的校验方式,其他系统只能去校验一组验证码,那么就会出现同时有多个用户请求的情况下会使验证码被覆盖,导致其中的一个或者多个用户的验证码校验错误,而本发明很好的解决了这个问题,不同的用户请求不同的验证码,他们是不相互依赖的。
[0018]本发明中验证码的产生如图1所示:
[0019]首先,打开web页面将会产生2项4位随机数,比如:a79h和u3w8,其中一项作为key,如a79h,另一项作为value,如u3w8,再获取一个当前时间,如20131022105136,然后把这三项数据key:a79h, value:u3w8, time:20131022105136作为一组验证码组保存到配置文件中,在保存过程中,先依据每组验证码保存的当前时间项检查以前保存的每组验证码的停留时间,即与现在的当前时间比较是否已经超时,默认是10分钟,如果已经超时则将已经超时的一组验证码组的数据删除,然后再将页面获取到的验证码组与未超时的原保存的验证码组一起保存到配置文件中,如果原来保存到配置文件的验证码组没有超时,则将页面获取到的验证码组与原保存的验证码组一起保存到配置文件中。验证码组保存完成后,页面将依据value的值u3w8生成一个验证码图片,展现在界面,此u3w8即是用户在页面展现的验证码上看到的图案,同时提供一个验证码输入框给用户验证输入验证码,而key:a79h则隐藏保存在界面。每个页面都在展现时生成各自的验证码组,展现各自的验证码的验证码图片,后台C++保存模块统一保存多会话的验证码组,从而实现了多会话的验证码功能。
[0020]本发明中验证码的验证如图2所示:
[0021]用户依据验证码图片的图案将验证码输入到验证码输入框,如验证码图案显示u3w8,提交验证码之前,用户首先判断输入的验证码与页面的验证码图片的图案是否匹配,点提交后页面把用户输入的验证码value:u3w8,页面标识key:a79h作为一组用户输入验证码组传进后台验证模块验证。在验证过程中,验证模块会依据每组验证码组保存的当前时间项与现在的当前时间比较,检查保存在配置文件中的每组验证码组是否有已经超时过期,如果没过期,则与配置文件中的验证码进行遍历比对是否匹配,查找key为a79h,value为u3w8的验证码组,若匹配就是验证码验证成功,否则失败;如果有验证码过期,则删除掉过期的验证码组,然后再进行遍历比对,比对成功则验证码验证成功,否则失败,返回验证结果给页面。每一个页面都独立执行上面的过程,这样进行验证码的验证,使得验证过程更加安全,利用C++的特性,使得并发性更强,实现了多会话验证码的验证功能。
[0022]本发明中验证码产生及验证的C++结构如下:
[0023]
【权利要求】
1.CGI web界面下的多会话验证码的产生方法,其特征在于,首先,页面由PERL编码的CGI界面展现生成,打开页面将会产生2项4位随机数和当前时间这三项作为一组验证码组保存到配置文件中,一项4位数用于生成图片验证码上的数字图片,另一项4位数用于唯一标识当前的页面;在这组验证码组保存过程中,会调用并传递页面生成的验证码组数据到由C++代码编写的后台保存模块,保存模块先根据验证码组保存时的当前时间项逐组检查以前的保存的验证码组的有效时间是否已经超时,默认每组验证码的有效时间是10分钟,如果某组验证码组的当前时间项已经超时则将已经超时的这一组验证码组的数据删除,然后再保存在页面获取到的一组验证码组到配置文件中,如果配置文件中的验证码组都没有超时,则直接保存页面生成的一组验证码组;验证码组保存完成后,将验证码组中的其中一项4位数作为验证码,生成图片验证码上的数字图案展现在页面,保存另一个4位数作为本页面的唯一标识隐藏,则验证码的产生完成。
2.根据权利要求1所述的方法,其特征在于,后台C++保存模块能够统一保存多会话的验证码组,从而实现了多会话的验证码功能。
3.根据权利要求1所述的方法,其特征在于,本发明还能够直接进行验证码的产生,而不用校验验证码的有效性,即验证码是否已经过期,但这样使得验证码会大量堆积而占用了内存。
4.根据权利要求1所述的方法,其特征在于,本发明还能够不用C++进行后台保存,而直接在页面产生验证码。
5.CGI web界面下的多会话验证码的验证方法,其特征在于,用户依据展现的页面上的验证码图片的数字输入相应的验证码,提交验证码的时候,用户首先判断输入的验证码与页面验证码图片显示的验证码数字是否一致,然后点登陆或者提交,页面就会把这个用户输入的四位验证码、此页面的唯一标识码及当前时间组成一个用户输入的验证码组传入后台,验证码的验证过程开始,验证过程如下:用户验证码组传入后台后,验证模块会首先检查保存验证码的配置文件中在当前时间是否有验证码已经超时过期,如果没过期,则与配置文件中的验证码进行遍历比对是否有与此传入的用户验证码组匹配的组,若匹配就验证成功,否则失败;如果有验证码过期,则删除掉过期的验证码,然后与配置文件中的验证码进行遍历比对是否有与此传入的验证码组匹配的组,若匹配就验证成功,否则失败。
6.根据权利要求5所述的方法,其特征在于,每一个页面都独立执行验证码的验证过程,使得验证过程更加安全,利用C++的特性,使得并发性更强,实现了多会话验证码的验证功能。
7.根据权利要求5所述的方法,其特征在于,本发明还能够直接进行验证码的校验,而不用校验验证码的有效性,即验证码是否已经过期,但这样使得验证码会大量堆积而占用了内存。
8.根据权利要求5所述的方法,其特征在于,本发明还能够不用C++,而直接在页面产生验证码在页面就进行验证,但是这样可能使得系统不安全,因为一些恶意用户会绕过页面的验证直接与服务端通信,所以必须在服务端也进行校验,防止恶意攻击。
【文档编号】H04L29/06GK103532979SQ201310526516
【公开日】2014年1月22日 申请日期:2013年10月30日 优先权日:2013年10月30日
【发明者】柯宗贵, 柯宗庆, 杨育斌, 汪志军 申请人:蓝盾信息安全技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1