一种基于验证码的校验方法及装置与流程

文档序号:12739413阅读:166来源:国知局
一种基于验证码的校验方法及装置与流程

本申请涉及计算机技术领域,尤其涉及一种基于验证码的校验方法及装置。



背景技术:

目前,验证码(Completely Automated Public Turing test to tell Computers and Humens Apart,CAPTCHA,也称为全自动区分计算机和人类的图灵测试)作为一种安全校验方式,得到了广泛应用,其中,验证码可以区分操作者是用户个人还是非法程序,通过验证码可防止诸如:恶意尝试登录用户账户、枚举式破解用户密码、或者利用脚本控制进行刷单、发言等非法操作。

现有技术中,为了防止非法程序对验证码的自动识别,验证码所采用的展示方式越来越复杂多变,通常采用如下方式进行展示:方式一,如图1a所示,验证码使用数字或文字表达,并在验证码展示区中增加背景,或针对数字或文字进行扭曲,以便增强验证码的干扰程度。方式二,如图1b所示,提供多张图片以及提示信息,使得用户基于提示信息从多张相似的图片中识别出相应数量的特定图片。

然而,在上述的方式中,验证码采用较为复杂的展示方式,虽然能够对非法脚本自动识别起到干扰作用,但同样也增加了对用户的干扰,换言之,当上述的验证码展示给用户后,用户识别错误的概率会增加,一旦出错,用户需要刷新验证码,并继续对新生成的验证码进行识别,直到通过校验。显然,现有技术中的上述校验过程可能需要耗费较长的时间,特别是在识别出错的情况下,将导致用户需重复进行校验。



技术实现要素:

本申请实施例提供一种基于验证码的校验方法,用以解决现有技术中用户对验证码识别出错可能性较大导致校验过程耗时较长的问题。

本申请实施例提供一种基于验证码的校验装置,用以解决现有技术中用户对验证码识别出错可能性较大导致校验过程耗时较长的的问题。

本申请实施例采用下述技术方案:

本申请实施例提供的一种基于验证码的校验方法,包括:

接收校验请求;

当接收到所述校验请求后,获取预先生成的第一字符串;其中,所述第一字符串中包含至少一个可变字符;

根据预先建立的可变字符与备用字符的对应关系,将部分或全部可变字符替换为备用字符,得到第二字符串;

根据所述第二字符串生成验证码,对所述校验请求所对应的用户进行校验。

本申请实施例提供的一种基于验证码的校验装置,包括:

接收模块,接收校验请求;

获取模块,当接收到所述校验请求后,获取预先生成的第一字符串;其中,所述第一字符串中包含至少一个可变字符;

替换模块,根据预先建立的可变字符与备用字符的对应关系,将部分或全部可变字符替换为备用字符,得到第二字符串;

校验模块,根据所述第二字符串生成验证码,对所述校验请求所对应的用户进行校验。

本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:

业务提供方的服务器在针对用户进行校验的过程中,服务器会针对验证码进行字符替换的操作,相对于用户个人而言,采用字符替换方式所生成的验证码并不会影响用户获知其中的含义,并且,本申请实施例的验证码中的字符并未采用诸如字形扭曲、颜色变换、添加背景等方式,使得用户可以较为便捷且准确地识别出验证码,而对于计算机程序而言,经过字符替换后的验证码中可能包含多种类型的字符,并且不符合通常的语法,从而使得计算机程序难以依据识别算法有效地识别出该验证码所表征的内容,即可有效降低计算机程序执行非法操作的可能。

相较于现有技术中的验证码方式而言,本申请实施例中所提供的验证方式,提升了验证码的可辨识性,使得用户能够直观地获知其表征的含义,从而能够增加用户辨识验证码的准确性,减少校验过程的耗时,同时,增加了计算机程序对验证码的识别难度,也能够有效降低计算机程序执行非法操作的可能。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1a及1b为现有技术中的验证码示意图;

图2a为本申请实施例提供的基于验证码的校验过程所基于的架构示意图;

图2b为本申请实施例提供的基于验证码的校验过程示意图;

图3为本申请实施例提供的生成字符替换验证码所基于的架构示意图;

图4a及4b为本申请实施例提供的不同校验方式的校验界面示意图

图5为本申请实施例提供的基于验证码的校验装置结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

需要说明的是,在本申请实施例中,校验过程可基于如图2a所示的架构,校验过程可由在线业务提供方后台的服务器实现,其中,在线业务提供方包括但不限于:网站、电信运营商、数据中心等能够提供在线业务的业务提供方。用于实现校验过程的服务器,具体可以是负责安全维护功能服务器,如:在线业务提供方后台的安全中心服务器。这里并不构成对本申请的限定。在后续描述中,将在线系统后台的服务器统一称为:服务器。

所述的用户,可理解为使用在线业务提供方所提供的业务服务的操作者,这里需要说明的是,在本申请实施例中的校验场景下,合法的操作者应为自然人,而非法的操作者为计算机脚本、程序等。

以下结合附图,详细说明本申请各实施例提供的技术方案。

如图1所示,示出了本申请实施中的基于验证码的校验过程,该过程具体包括以下步骤:

S101:接收校验请求。

在本申请实施例中,所述的校验请求通常在触发校验后生成,实际操作中,可由用户触发,也可由服务器自行根据实际应用的需要触发。

具体地,在一种可能的场景中,用户可以主动发送校验请求,此时,所述的校验请求用于触发验证码的校验过程。作为该场景中的一种方式,验证码的校验过程可以应用在账户登录的场景下,换言之,当用户进入登录界面(如:网站的账户登录界面)后,便可视为用户发出校验请求,相应地,服务器便会接收到用户发送的校验请求。

在另一种可能的场景中,服务器可以自行按照相应的安全规则,对用户进行身份校验,如:按照设定的周期,服务器主动生成验证码;或者,服务器判定用户的某些操作具有风险时,主动生成验证码,向用户发起校验,以便确定操作者不是由计算机程序所发出。当然,这里并不构成对本申请的限定。

S102:当接收到所述校验请求后,获取预先生成的第一字符串。

其中,所述第一字符串中包含至少一个可变字符。

所述的第一字符串,可理解为由数字、文字等构成且具有指示作用的标定字符串。

正是考虑到在实际应用场景下,对于标定的字符串较容易被计算机程序识别,从而增加了验证过程的风险。故在本申请实施例中,第一字符串中包含可变字符,该可变字符可被替换成其他字符,以便起到干扰作用。

S103:根据预先建立的可变字符与备用字符的对应关系,将部分或全部可变字符替换为备用字符,得到第二字符串。

所述的备用字符,即可以与可变字符属于同类别的字符,如:备用字符与可变字符均属于汉字字符、英文字符、数字字符,也可以与可变字符属于不同的字符类别。具体来说,作为本申请实施例中的一种方式,可将汉字转换为拼音,如:将“红”转换为“hong”,作为另一种方式,可将某一文字(或词组)转换为同音字(或词组),如:将“蓝色”转换为“兰色”。

需要说明的是,经过字符替换后的第二字符串,其所要表征的含义并不会改变,也即,对应用户而言,仍能够获知验证码所表征的含义,并可基于验证码执行相应的操作。

S104:根据所述第二字符串生成验证码,对所述校验请求所对应的用户进行校验。

所述的验证码,在实际操作时,可采用图片或文本信息等格式展示,并用于指示用户执行某一特定操作,这里并不构成对本申请的限定。

正是由于第二字符串是进行字符替换的字符串,那么,由第二字符串所生成的验证码,能够起到干扰作用,相较于现有技术中依赖字形扭曲、变色、背景等干扰的方式而言,本申请实施例中经字符替换的验证码所表征的含义并不会改变,并且由于不采用过于复杂的变化的方式,既能够使得用户获知验证码所表征的含义,也能够使得用户可以较为容易地进行识别,此外,由于进行了字符替换,增加了机器识别的难度。

经过前述内容,在生成了验证码后,便可以针对相应的操作者(即,用户)进行校验,以区分操作者是用户个人还是计算机程序。

当然,作为本申请实施例中的一种可行方式,可以在相应的校验界面(如:登录界面)中向用户展示验证码,并在用户根据该验证码执行了相应的操作,根据标定校验信息对用户的操作进行校验。

通过上述步骤,业务提供方的服务器在针对用户进行校验的过程中,服务器会针对验证码进行字符替换的操作,相对于用户个人而言,采用字符替换方式所生成的验证码并不会影响用户获知其中的含义,并且,本申请实施例的验证码中的字符并未采用诸如字形扭曲、颜色变换、添加背景等方式,使得用户可以较为便捷且准确地识别出验证码,而对于计算机程序而言,经过字符替换后的验证码中可能包含多种类型的字符,并且不符合通常的语法,从而使得计算机程序难以依据识别算法有效地识别出该验证码所表征的内容,即可有效降低计算机程序执行非法操作的可能。

相较于现有技术中的验证码方式而言,本申请实施例中所提供的验证方式,提升了验证码的可辨识性,使得用户能够直观地获知其表征的含义,从而能够增加用户辨识验证码的准确性,减少校验过程的耗时,同时,增加了计算机程序对验证码的识别难度,也能够有效降低计算机程序执行非法操作的可能。

需要说明的是,在本申请实施例中,针对验证码的字符替换,由于不改变验证码所表征的含义,故实质上是将验证码中的字符进行同音或同义替换,也即,预先建立可变字符与备用字符的对应关系,具体包括:针对任一可变字符,确定该可变字符的至少一个同音字符和/或同义字符,将确定的所述同音字符和/或同义字符作为该可变字符的备用字符,并建立与所述可变字符的对应关系。

上述内容中所述的第一字符串,可认为是预先根据相应的验证码生成规则生成,并存储在服务器侧的数据库中,其架构示意图如图3所示。

在进行字符替换的过程,可仅将个别的可变字符进行替换,如:某验证码字符串为汉字构成的字符串“输入两个汉字”,假设该字符串中的六个汉字均为可变字符,实际操作时,可仅将其中两个可变字符“两”及“汉”进行替换,假设这两个可变字符分别对应有各自的备用字符:“俩”及“焊”,从而将可变字符替换为备用字符后的第二字符串变为:“输入俩个焊字”。

当然,也可将全部的字符进行替换,如:对于第一字符串:“红球”,假设其中两个字符均为可变字符,各自分别对应的备用字符为拼音:“hong”以及“qiu”,则经过字符替换后的第二字符串为:“hongqiu”。

在实际应用时,如果可变字符串对应不同的备用字符,那么,也可以采用混合式的替换方式,如:将第一字符串“选择两个红球”,替换为“xuan择俩个hong求”。

显然,通过上述的替换方式,用户个人能够获知验证码字符所表征的含义,但对于计算机程序而言,将受到较强的干扰。

在实际操作时,可基于字符替换后的第二字符串,生成相应的验证码,根据所述第二字符串生成验证码,具体包括:根据所述第二字符串,生成指定格式的验证码。其中,所述指定格式包括:图片格式、文本格式中的至少一种。

在实际应用场景下,用户通常会根据验证码执行某种操作,例如:用户根据验证码输入相应的字符串,又或者,用户根据验证码所指示的行为,执行某种操作。而无论是用户输入字符串或是执行某种操作,在服务器侧,都需进行校验,为了保证校验的准确性,故在服务器侧将确定校验标准。可以理解地,所述的标定校验信息,是一种校验标准,只有用户的操作符合该校验标准,才可通过校验。

作为在实际应用场景下的一种校验方式,用户可以根据校验界面中所展示的验证码输入相应的字符串,在此方式下,标定校验信息就是第一字符串,对所述校验请求所对应的用户进行校验,具体包括:在对用户进行校验的界面上,生成输入区域,获取用户在所述输入区域内根据所述验证码所输入的待校验字符串,根据所述第一字符串,对所述待校验字符串进行校验。

也即,如图4a所示,示出了该方式下的校验界面,可见,该校验界面中包含验证码和相应的输入区域,用户根据验证码在该输入区域中输入相应的字符串以进行校验,当然,在图4a中,用户根据验证码“hong色”(该验证码中为第二字符串),在输入区中输入汉字词组“红色”后(假设第一字符串:红色),才可通过校验。

而作为在实际应用场景下的另一种校验方式,用户可以根据校验界面中所展示的验证码执行相应的校验操作,在此方式下,所述标定校验信息包括:预设的标准操作信息,对所述校验请求所对应的用户进行校验,具体包括:在对用户进行校验的界面上,生成可操作的验证码展示区,获取所述用户在验证码展示区内,根据所述验证码所执行的待校验操作所对应的待校验操作信息,根据所述标定操作信息,对所述待校验操作信息进行校验。

如图4b所示,示出了该方式下的校验界面,可见,该校验界面中包含可操作且携带验证码的验证码展示区,用户可以根据验证码所指示的行为,在该验证码展示区发出相应的待校验操作,在图4b中,假设标准操作信息为操作控件“2”和“4”被点击,那么,用户根据验证码“点击下图中的ou数”,针对验证码展示区内的操作控件“2”和“4”进行点击后,可通过校验。

当然,上述两种方式仅是为了说明本申请实施例中的校验方法,并不构成对本申请的限定。

以上为本申请实施例提供的校验方法,基于同样的思路,本申请实施例还提供一种基于验证码的校验装置。

如图5所示,所述的校验装置,设置于业务提供方的服务器侧,该装置包括:

接收模块501,接收校验请求;

获取模块502,当接收到所述校验请求后,获取预先生成的第一字符串;其中,所述第一字符串中包含至少一个可变字符;

替换模块503,根据预先建立的可变字符与备用字符的对应关系,将部分或全部可变字符替换为备用字符,得到第二字符串;

校验模块504,根据所述第二字符串生成验证码,对所述校验请求所对应的用户进行校验。

所述装置还包括:建立模块505,针对任一可变字符,确定该可变字符的至少一个同音字符和/或同义字符,将确定的所述同音字符和/或同义字符作为该可变字符的备用字符,并建立与所述可变字符的对应关系。

所述校验模块504,根据所述第二字符串,生成指定格式的验证码。其中,所述指定格式包括:图片格式、文本格式中的至少一种。

所述校验模块504,在对用户进行校验的界面上,生成输入区域,获取用户在所述输入区域内根据所述验证码所输入的待校验字符串,根据所述第一字符串,对所述待校验字符串进行校验。

所述校验模块504,在对用户进行校验的界面上,生成可操作的验证码展示区,获取所述用户在验证码展示区内,根据所述验证码所执行的待校验操作所对应的待校验操作信息,根据预设的标定操作信息,对所述待校验操作信息进行校验。

在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable Gate Array,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)等,目前最普遍使用的是VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。

控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定事务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行事务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1