发明内容
本发明要解决的技术问题在于,针对现有技术中网络验证码技术水平参差不齐、没有专门提供验证码的服务器的技术缺陷,提供一种第三方验证码系统及验证码提供方法,由专门的验证码服务器为网站服务器提供验证码信息。
本发明解决其技术问题所采用的技术方案是:
本发明提供一种第三方验证码系统,包括第三方验证码服务器、网站服务器和用户端;
所述第三方验证码服务器,用于根据至少一个所述网站服务器的请求为其提供验证码服务;
所述网站服务器,用于根据所述第三方验证码服务器提供的服务来验证所述用户端输入的验证码,以接收或者拒绝所述用户端的访问;
所述用户端,用于发送请求验证码输入页面信息和输入所述验证码以访问所述网站服务器。
在本发明所述的第三方验证码系统中,所述第三方验证码服务器包括:
请求获取单元,用于获取来自所述网站服务器的验证码请求信息;
验证码生成单元,用于生成验证码信息;
验证码信息发送单元,用于发送所述的验证码信息至所述网站服务器。
在本发明所述的第三方验证码系统中,所述验证码生成单元还包括:
字符串获取单元,用于根据所述请求获取单元的验证码请求信息,随机选取一个字符串;
标记单元,用于随机选取一种或者多种标记方法来标记所述字符串中的一个或者多个字符;
验证码图片生成单元,用于生成包含有一个或者多个被标记字符的所述字符串的验证码图片;待验证会话生成单元,用于根据所述字符串中所有被标记的字符生成待验证会话;
输入方法生成单元,用于产生提示用户输入验证码图片中被标记的一个或多个字符的输入方法;
文件生成单元,用于将所述待验证会话和所述输入方法写入文件或者数据库;
所述验证码信息发送单元,用于将所述验证码图片、所述输入方法和/或者所述待验证会话发送至所述网站服务器;
在本发明所述的第三方验证码系统中,所述第三方验证码服务器还包括,
IP地址验证单元,用于验证所述网站服务器的IP地址,以接收或者拒绝所述网站服务器的访问;
信息接收单元,用于接收来自所述网站服务器的所述用户端输入验证码的反馈信息;
存储单元,用于存储所述的反馈信息、所述字符串和所述标记方法。
在本发明所述的第三方验证码系统中,所述网站服务器,还用于将接收的所述验证码图片和输入方法以一张图片的形式显示在用户端页面,或者所述验证码图片以图片形式和所述输入方法以文本形式分别显示在用户端页面。
本发明还提供了一种第三方验证码提供方法,其特征在于,包括以下步骤:
A、用户端向网站服务器发送请求验证码输入页面信息;
B、所述网站服务器根据所述用户端的请求向第三方验证码服务器发送验证码请求信息;
C、所述第三方验证码服务器根据所述验证码请求信息生成验证码信息;
D、所述第三方验证码服务器向发送所述验证码请求信息的所述网站服务器发送所述验证码信息。
在本发明所述的第三方验证码提供方法中,其中步骤C包括:
C1、所述第三方验证码服务器随机调用一个字符串,随机标记字符串中的一个或者多个字符;
C2、所述第三方验证码服务器将标记后的所述字符串生成验证码图片;
所述步骤D还包括:
D1、所述第三方验证码服务器将所述验证码图片发送至所述网站服务器。
在本发明所述的第三方验证码提供方法中,其中步骤C还包括:
C3、所述第三方验证码服务器将所述字符串中所有被标记的字符生成待验证会话;
C4、所述第三方验证码服务器生成提示用户输入所述验证码图片中被标记的一个或多个字符的输入方法;
所述步骤D还包括:
D2、所述第三方验证码服务器将所述输入方法和/或所述待验证会话发送至所述网站服务器。
在本发明所述的第三方验证码提供方法中,所述步骤D1之前还包括步骤:
D0、所述第三方验证码服务器验证发送所述验证码请求信息的网站服务器的地址,以接受或者拒绝所述网站服务器的访问。
在本发明所述的第三方验证码提供方法中,还包括步骤,
E、所述网站服务器将所述验证码图片和所述输入方法同时显示在用户端页面;
F、用户输入验证码,所述网站服务器根据所述待验证会话判断用户输入的验证码是否正确,在结果为是时,用户通过验证;或者,
用户输入验证码,所述网站服务器将所述用户输入验证码发送给所述第三方验证码服务器,由所述第三方验证码服务器验证所述用户输入验证码是否正确,并向所述网站服务器发送验证结果信息;所述网站服务器根据所述验证结果信息向所述用户端发送是否通过验证的信息;
G、所述第三方验证码服务器获取来自所述网站服务器的所述用户端输入验证码的反馈信息;
H、所述第三方验证码服务器存储所述反馈信息、所述字符串和所述标记方法。
本发明产生的有益效果是:构造独立于网站服务器的第三方验证码服务器为多个网站服务器提供验证码信息的第三方验证码系统,有利于专门的验证码服务器统一提供安全性较高的验证码信息,同时也有利于验证码技术的提高,有利于互联网的健康发展。
具体实施方式
如图1所示,本发明的较佳实施例第三方验证码系统,包括第三方验证码服务器1、网站服务器2和用户端3;
第三方验证码服务器1,用于根据至少一个网站服务器2的请求为其提供验证码信息;
网站服务器2,用于根据验证码信息验证用户端3输入的验证码,以接收或者拒绝用户端3的访问;
用户端3,用于发送请求验证码输入页面信息和输入验证码以访问网站服务器2;
其中,第三方验证码服务器1包括:
请求获取单元100,用于获取网站服务器2的验证码请求信息;验证码信息生成单元200,用于生成验证码信息;验证码信息发送单元300,用于发送验证码信息。其中,验证码信息包括验证码图片和验证码图片相关的信息,验证码图片相关的信息又包括用于验证用户输入验证码是否正确的待验证会话和用于提示用户输入验证图片中一个或者多个被标记的一个或者多个字符的输入信息。
进一步地,本发明较佳实施例中,验证码信息生成单元200还包括:字符串获取单元201,用于根据请求获取单元的请求信息,随机获取一个字符串;标记单元203,用于随机选取一种或者多种标记方法来标记字符串中的一个或者多个字符;验证码图片生成单元202,用于生成包含有一个或者多个被标记字符的字符串的验证码图片。字符串和标记方法都是预先存储在第三方验证码服务器1存储单元500中,在需要时随机调用。进一步地,本发明较佳实施例中,第三方验证码服务器1还包括:待验证会话生成单元205,用于根据字符串中所有被标记的字符生成待验证会话,在将待验证会话发送给网站服务器2后,网站服务器2根据待验证会话来判断用户端3输入的验证码是否正确;输入方法生成单元204,用于生成提示用户输入验证码图片中被标记的一个或多个字符的输入方法。
第三方验证码服务器1中,文件生成单元206将待验证会话生成单元205生成的待验证会话和输入方法生成单元204生成的输入方法写入到一个有访问限制的文本文件(比如xml文件)或者图片文件或者数据库;这样同时需要待验证会话和输入方法时只需要调用一个文本文件或者图片文件,或者直接调用数据库中的相关数据就可以了,也可以无需文件生成单元206,而将待验证会话生成单元205生成的待验证会话和输入方法生成单元204生成的输入方法根据需要直接发送给网站服务器2,待验证会话也可以不发送给网站服务器2,即对用户端3所输入的验证码不再网站服务器2进行验证,而是由网站服务器2将用户端3所输入的验证码发送给第三方验证码服务器1,由第三方验证码服务器1进行验证,再将验证结果信息返回给网站服务器2,网站服务器2根据验证结果信息向用户端3发送其是否通过验证的信息。
另外,第三方验证码服务器1中验证码图片生成单元202在生成图片的时候,也可以将用于提示用户输入验证码的输入方法信息包含在验证码图片中,在网站服务器2获取验证码图片的同时也获取了输入方法,这样在文件生成单元206中只需要将待验证会话或者和识别码(一种由请求方信息和时间等因素混合计算出的旨在标识某次请求的字符串)写入文件或者数据库中即可。
进一步地,第三方验证码服务器1还包括IP地址验证单元600,用于验证网站服务器2的IP地址,以接收或者拒绝网站服务器2的访问。在网站服务器2向第三方验证码服务器1发送验证码请求信息时,第三方验证码服务器1在接收到请求信息后,通过IP地址验证单元600对网站服务器2的IP地址进行验证,如果IP地址属于可访问的IP地址,则通过验证码信息发送单元300向该网站服务器2发送验证码图片,再根据网站服务器2发送的请求验证码相关信息,通过验证码信息发送单元300向该网站服务器2包括待验证会话和输入方法的文本文件。网站服务器2根据文本文件中的待验证会话来判断用户输入的验证码是否正确,根据输入方法来提示用户输入验证码图片中被标记的一个或多个字符。
进一步地,本发明较佳实施例第三方验证码系统的第三方验证码服务器1还包括:信息接收单元400,用于接收网站服务器2发送的用户输入验证码的反馈信息,第三方验证码服务器1根据接收的反馈信息,对其进行分析,从而改进验证码,改善用户使用验证码的体验,进一步提高网络的安全性。
进一步地,本发明较佳实施例第三方验证码系统的第三方验证码服务器1还包括存储单元500,用于存储网站服务器2发送的用户输入验证码的反馈信息,以及存储字符串获取单元201所要获取的字符串和标记单元203所要调用的标记方法。
进一步地,网站服务器,还用于将接收的验证码图片和输入方法同时显示在用户端页面。
本发明较佳实施例还提供了一种第三方验证码提供方法,如图2所示,包括以下步骤:
S101、用户端向网站服务器发送请求验证码输入页面信息;
S102、网站服务器根据用户端的请求通过Javascript向第三方验证码服务器发送验证码请求信息;
S105、第三方验证码服务器根据验证码请求信息生成验证码信息,验证码信息包括验证码图片和与验证码相关的信息;
S106、第三方验证码服务器向发送验证码请求信息的网站服务器发送验证码图片;
S108、第三方验证码服务器向发送验证码请求信息的网站服务器发送与验证码相关的信息;
进一步地,如图2所示,其中步骤S105中与验证码相关的文本文件包括用于验证用户输入验证码是否正确的待验证会话和用于提示用户输入验证图片中一个或者多个被标记的一个或者多个字符的输入方法信息,第三方验证码服务器将待验证会话和输入方法信息写入一个有访问限制的文本文件比如xml文件。验证码信息包括验证码图片、待验证会话和输入方法信息。
进一步地,如图3所示,第三方验证码提供方法步骤S105还包括以下步骤(以下步骤均由第三方验证码服务器执行):
S1051、随机调用一个字符串,该字符串可以为一段有意义的短句,如一句祝福的话语,一句名人名言或者一句广告词等等;
S1052、随机调用一种标记方法,随机标记字符串中的一个或者多个字符;
S1053、将标记的一个字符或者多个字符保存为用于与用户输入的验证码进行比对的待验证会话;
S1054、将标记后的字符串生成验证码图片;
S1055、生成提示用户输入验证码图片中被标记的一个或多个字符的输入方法;
S1056、将待验证会话和输入方法写入文件或者数据库,文件包括文本文件和图片文件;
进一步地,如图2所示,第三方验证码提供方法还包括以下步骤:
S103、第三方验证码服务器接收网站服务器发送的验证码图片请求信息;
S104、第三方验证码服务器根据发送请求的网站服务器的IP地址来判定其是否为允许访问的网站服务器;在结果为是时,执行步骤S105;
进一步地,如图2所示,第三方验证码提供方法还包括步骤:
S107、网站服务器接收第三方验证码服务器发送的验证码图片后,会向第三方验证码服务器继续发送验证码相关信息的请求,即包括待验证会话和输入方法的文件或者数据;
S109、网站服务器接收到相关信息后,将其中的待验证会话写入此次session中,并将验证码图片和文件中或者数据库中的用于提示用户输入验证码的输入方法返回到用户端;其中将输入方法和验证码图片同时显示在客户端页面;
S110、用户根据界面显示的验证码图片和提示的输入方法输入验证码图片中被标记的一个或者多个字符,并将输入的验证码提交;
S111、网站服务器接收用户输入的验证码并将所接收的用户输入的验证码和保存在session中的验证码等反馈信息发送给第三方验证码服务器,第三方验证码服务器接收反馈信息并将其保存在数据库中,并根据反馈信息不断改进验证码技术,改善用户体验;
S112、网站服务器将保存在session中的验证码与用户输入的验证码进行比较,以判定用户是否通过验证;
S113、当保存在session中的验证码与用户输入的验证码相同时,用户输入的验证码正确,通过验证;
S114、当保存在session中的验证码与用户输入的验证码不相同时,用户输入的验证码错误,验证失败,重新回到步骤S101。
进一步地,对用户端所输入的验证码也可以在第三方验证码服务器中进行验证,在第三方验证码服务器生成待验证会话时,相应生成一个流水标志码,将验证码图片和该流水标识码同时发送给网站服务器,在用户填写完登录表单提交后,网站服务器将用户输入的验证码和与验证码图片对应的流水标识码发送给第三方验证码服务器,第三方验证码服务器根据流水标识码来提取对应的待验证会话,进行验证,如果相同则向网站服务器返回一个成功信息,否则返回失败信息,网站服务器根据返回的结果信息,相应作出用户端通过与否的验证结果信息。
在本发明较佳实施例中还可以由第三方验证码服务器将用于提示用户输入验证码的输入方法与验证码一起生成验证码图片发送给网站服务器,这样网站服务器就可以将验证码和输入方法以一张图片的形式显示在用户端界面上。
在网站服务器要求第三方验证码提供服务时,若第三方验证码服务器生成的是不包含输入方法的验证码图片,网站服务器请求的方式有以下三种:
(1)发起一次请求,请求获取一个验证码图片、待验证会话和输入方法的数据包,之后在网站服务器端分解该数据包获得验证码图片、待验证会话和输入方法;
(2)发起两次请求,第一次请求验证码图片,紧接着再发起一次请求来请求待验证会话和输入方法信息;
(3)发起三次请求,第一次请求验证码图片,紧接着再发起一次请求来请求输入方法信息,等用户提交表单(即用户输入用户名、密码和验证码等信息)时,再发起一次请求来请求待验证会话;
若第三方验证码服务器生成的是包含输入方法的验证码图片,则网站服务器请求的方式有以下两种:
(1)发起一次请求,请求获取一个验证码图片和待验证会话的数据包,之后在网站服务器端分解该数据包获得包含输入方法的验证码图片和待验证会话;
(2)发起两次请求,第一次请求包含有输入方法的验证码图片,等用户提交表单时再发起请求验证码信息。
对判断用户的验证码输入是否正确的验证方式也有以下两种:
(1)由网站服务器验证,即由网站服务器利用用户输入的验证码和从第三方验证码服务器获取的待验证会话进行验证。
(2)第三方验证码服务器验证,即在用户提交表单后,网站服务器向第三方验证码服务器发送用户输入的验证码,由第三方验证码服务器进行验证后将成功或者失败信息返回网站用户界面,此种验证方式网站服务器就无需向第三方验证码服务器请求待验证会话了。
另外,本发明还可以只由第三方验证码服务器提供用于生成验证码图片的字符串,而由网站服务器根据获取的字符串通过自身的验证码图片生成程序自动生成验证码图片以及相应的验证用户输入验证码信息是否正确的待验证会话,其余的和本发明的较佳实施例相同。这样,网站服务器只与第三方验证码服务器发生一次连接,所获取的是一串验证码的字符,取得验证码字符后自行生成验证码图片;在本发明的较佳实施例中网站服务器需要与第三方验证码服务器交互两次,一次是直接获取验证码图片紧接着是获取验证码相关信息。
所以,对于上述流程,还可以是:
S101、用户端向网站服务器发送请求验证码输入页面信息;
S102、网站服务器接收用户端的请求信息后,调用验证码生成程序向第三方验证码服务器请求(比如通过xmlhttp请求)验证码字符串;
S103、第三方验证码服务器接收网站服务器发送的字符串请求信息;
S104、第三方验证码服务器根据发送请求的网站服务器的IP地址来判定其是否为允许访问的网站服务器;在结果为是时,执行步骤S105;
S105、第三方验证码服务器随机调用一串字符串,并发送给请求的网站服务器;
S106、网站服务器的验证码生成程序接收到该字符串信息后调用自身的图片生成程序,将这段字符生成为图片形式;
S107、网站服务器将字符串写入此会话的session,并将验证码图片返回到用户端;
S108、用户根据验证码图片输入验证码并提交;
S109、网站服务器接收用户输入的验证码,将用户填写的验证码与session中保存的验证码发送到第三方验证码服务器,,第三方验证码服务器接收反馈信息并将其保存在数据库中,并根据反馈信息不断改进验证码技术,改善用户体验;
S110、网站服务器将保存在session中的验证码与用户输入的验证码进行比较,以判定用户是否通过验证;
S111、当保存在session中的验证码与用户输入的验证码相同时,用户输入的验证码正确,通过验证;
S108、当保存在session中的验证码与用户输入的验证码不相同时,用户输入的验证码错误,验证失败,重新回到步骤S101。
第二种流程中,网站服务器只与验证码服务器发生一次连接,所获取的是一串验证码的字符而第一种流程中获取的直接是图片,然后再用这一串字符来生成验证码图片;第一种流程中,网站服务器需要与第三方验证码服务器交互两次,一次是获取图片紧接着是获取验证码;第二种流程中,网站服务器只与第三方验证码服务器交互一次,即取得验证码字符后自行生成验证码图片。第二种流程较第一种流程程序更简单,步骤更加精简,但是由于验证码图片是在网站端生成,其图片的种类多少就受限于网站端图片生成程序的功能,所以我们更倾向于第一种流程所提供的方法。
本发明通过独立于网站服务器的第三方验证码服务器可以为一个或者多个网站服务器提供验证码,让专业的验证码技术服务各个网站服务器,从而大大提高网络的安全性;同时通过网站服务器向第三方验证码服务器提供用户输入验证码的相关信息,第三方验证码服务器收集和分析用户输入验证码的相关信息,从而不断改进验证码技术,改善用户体验,更好地提高网络安全性。另外第三方验证码服务器提供验证码图片的同时增加了提示用户输入验证码图片中被标记的一个或者多个字符的输入方法,这样就大大降低了“机器人程序”通过验证的可能性,从而使得网络的安全性有很大的提高。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。