发明内容
本发明要解决的技术问题在于,针对现有技术中的缺陷,提供一种可以避免验证码被大多数暴力破解方案所采用的识别技术所识别且对用户使用影响小的动态验证的方法及系统。
本发明解决其技术问题所采用的技术方案是:提供一种动态验证的方法,包括以下步骤:
S1、客户端在检测到按键提交登陆信息后,读取预设的随机验证信息并通过随机加密算法进行加密得到加密验证信息;所述客户端通过网页隐式参数传递将所述加密验证信息发送给所述服务器;
S2、所述服务器将所述加密验证信息反解析后得到解密验证信息,判断所述解密验证信息是否符合要求,如果是,则通过验证,否则向所述客户端返回验证失败的信息。
在本发明所述的动态验证的方法中,所述随机验证信息和随机加密算法分别包括所述服务器预先指示给所述客户端的第一随机序列和第一加密算法;
步骤S1具体包括以下分步骤:
S11、客户端在检测到按键提交登陆信息后,读取所述第一随机序列和第一加密算法,并通过所述第一加密算法对所述第一随机序列进行加密,得到加密验证序列;
S12、所述客户端将所述加密验证序列与所述登录信息一起发送给所述服务器;
步骤S2具体包括以下分步骤:
S21、所述服务器在接收到所述加密验证序列与登录信息后,将所述加密验证序列反解析得到解密序列;
S22、所述服务器对比所述解密序列与所述第一随机序列是否对应,如果是,则通过验证,否则向所述客户端返回验证失败的信息。
在本发明所述的动态验证的方法中,步骤S22中,当所述解密序列与第一随机序列不对应时,所述服务器指示第二随机序列和第二加密算法给所述客户端;所述客户端将所述第二随机序列和第二加密算法分别替代所述第一随机序列和第一加密算法。
在本发明所述的动态验证的方法中,所述动态验证的方法还包括以下步骤:
S3、在步骤S22通过验证后,所述服务器判断所述登陆信息是否正确,如果是,则返回登陆成功信息,否则返回登陆失败信息,且指示第三随机序列和第三加密算法给所述客户端;所述客户端将所述第三随机序列和第三加密算法分别替代所述第一随机序列和第一加密算法。
在本发明所述的动态验证的方法中,步骤S1之前还包括以下步骤:
S0、在所述客户端发送登陆页面打开请求后,所述服务器返回所述登陆页面,并将所述第一随机序列和第一加密算法指示给所述客户端。
本发明还提供一种动态验证的系统,包括相互通信连接的客户端和服务器:
所述客户端用于检测到登陆信息的按键提交,在检测到按键提交所述登陆信息后读取预设的随机验证信息并通过随机加密算法进行加密得到加密验证信息;所述客户端还用于通过网页隐式参数传递的方式将所述加密验证信息发送给所述服务器;
所述服务器用于将所述加密验证信息反解析后得到解密验证信息,判断所述解密验证信息是否符合要求,并在符合要求时通过验证,否则向所述客户端返回验证失败的信息。
在本发明所述的动态验证的系统中,所述随机验证信息和随机加密算法包括所述服务器预先指示给所述客户端的第一随机序列和第一加密算法;
所述客户端包括:
检测单元,用于检测登陆信息的按键提交;
存储单元,用于存储所述第一随机序列和第一加密算法;
加密单元,用于读取所述第一随机序列和第一加密算法,并通过所述第一加密算法对所述第一随机序列进行加密,得到加密验证序列;
第一通信单元,用于将所述加密验证序列与所述登录信息一起发送给所述服务器;
所述服务器包括:
第二通信单元,用于接收所述加密验证序列与登录信息,
验证信息生成单元,用于随机生成所述第一随机序列和第一加密算法;
解密单元,用于将所述加密验证序列反解析得到解密序列;
判断单元,用于对比所述解密序列与所述第一随机序列是否对应,并在对应时通过验证,否则通过所述第二通信单元向所述客户端返回验证失败的信息。
在本发明所述的动态验证的系统中,所述判断单元还用于在所述解密序列与第一随机序列不对应时指示所述验证信息生成单元随机生成第二随机序列和第二加密算法;所述验证信息生成单元通过所述第二通信单元指示所述第二随机序列和第二加密算法给所述客户端;
所述存储单元将所述第二随机序列和第二加密算法分别替代所述第一随机序列和第一加密算法。
在本发明所述的动态验证的系统中,所述服务器还包括:
登陆信息验证单元,用于在所述解密序列与第一随机序列不对应后判断所述登陆信息是否正确,并在正确时返回登陆成功信息,否则返回登陆失败信息,且指示所述验证信息生成单元随机生成第三随机序列和第三加密算法;所述验证信息生成单元通过所述第二通信单元指示所述第三随机序列和第三加密算法给所述客户端;
所述存储单元将所述第三随机序列和第三加密算法分别替代所述第一随机序列和第一加密算法。
在本发明所述的动态验证的系统中,所述客户端还用于通过所述第一通信单元向所述服务器发送登陆页面打开请求;
所述服务器还用于返回所述登陆页面,并将所述第一随机序列和第一加密算法通过网页隐式参数传递的方式指示给所述客户端。
本发明的动态验证的方法及系统具有有益效果:通过按键确认作为提交的指示信号,由于大多数暴力破解软件都是通过程序触发确认指令,在本发明中这些暴力破解软件将无法自动通过穷举法破解密码,同时本发明通过网页隐式参数的方式传输数据,而且验证信息及加密算法也是随机生成,破解软件难以获取符合要求的加密验证信息。本发明的验证信息不显示的页面中,并且与服务器之间的传输通过网页隐式参数传递的方式,无需用户填写任何验证信息,方便用户使用。
具体实施方式
为了解决现有技术中图片验证码容易被OCR技术识别而其他新的验证技术如短信验证及语言验证越来越占用用户的资源的缺陷,本发明的创新点在于:
由于验证信息及加密算法是随机生成,解决了现有技术中的验证码容易被识别的问题,同时破解软件难以获取符合要求的加密验证信息;而且通过按键确认作为提交的指示信号,由于大多数暴力破解软件都是通过程序触发确认指令,从而使这些暴力破解软件无法自动通过穷举法破解验证信息及密码。本发明的验证信息不显示的页面中,并且与服务器之间的传输通过网页隐式参数传递的方式,无需用户填写任何验证信息,方便用户使用。
图1示出了本发明的一种动态验证的方法,该方法包括以下步骤:
S1、客户端在检测到按键提交登陆信息后,读取预设的随机验证信息并通过随机加密算法进行加密得到加密验证信息;客户端通过网页隐式参数传递将加密验证信息发送给服务器;
S2、服务器将加密验证信息反解析后得到解密验证信息,判断解密验证信息是否符合要求,如果是,则通过验证,否则向客户端返回验证失败的信息。
本发明的按键提交包括通过鼠标点击页面的提交按键及通过键盘按键、如回车键确认等。
图2示出了本发明一个优选实施例提供的动态验证的方法,该实施例中的随机验证信息和随机加密算法分别包括服务器预先指示给客户端的第一随机序列和第一加密算法。其中,服务器指示随机验证信息及随机加密算法的方式可以是直接发送给客户端,也可以是指示客户端根据其存储或接收的信息动态生成,或者对登陆信息进行拼接、截取等方式生成。非直接发送的方式可以是直接在客户端预设加密算法库,在指示时只需发送相应算法的代号或序号即可。加密算法库可以是以js文件的格式预先设置在浏览器或相应登陆软件的安装文件中,或者再第一次请求登陆时返回给客户端。
该实施例的动态验证的方法包括以下步骤:
A1、客户端在检测到按键提交登陆信息后,读取第一随机序列和第一加密算法,并通过第一加密算法对第一随机序列进行加密,得到加密验证序列;
A2、客户端将加密验证序列与登录信息一起发送给服务器;
A3、服务器在接收到加密验证序列与登录信息后,将加密验证序列反解析得到解密序列;
A4、服务器对比解密序列与第一随机序列是否对应,如果是,则通过验证,否则向客户端返回验证失败的信息。
该实施例中的第一随机序列可以是数字字母组成的字符串,二进制字符串、十六进制字符串或其他形式的字符串,这些字符串是通过记载与文件中并与文件一同发送给客户端,如文本文件;也可以是作为某些文件的文件号并随该文件发送至客户端,如Cookie文件的CookieID;或也可以是通过服务器指定根据登陆信息的用户名、密码等拼接截取得到的字符串。该实施例的第一加密算法一般记载在js文件中,js文件即将Javascript脚本放入一个文件类并以js扩展名命名一种文本脚本。第一加密算法可以是对字符串某一位字符进行加减运算、将字符串与另一字符串相加减、字符串拼接截取或倒置、二进制字符取反或者上述可能的运算方式中几种的结合。
举例来说,第一随机序列为“a576f3”,第一加密算法是对字符串的ASCII码加上“130043”后将左边第2位减“4”,于是得到的加密验证序列则为“b476j6”,服务器通过逆运算得到解密序列为“a576f3”,与第一随机序列相同,则通过验证;此外,也可是第一随机序列为“101110”,第一加密算法为取反,则得到的加密验证序列为“010001”;再如,第一随机序列是用户名abcd和密码123456,第一加密算法为截取用户名第2-3位及密码3-5位,将用户名的两位字符分别穿插到密码的三个字符中,得到加密验证序列3b4c5,服务器反解析得到用户名对应的字符bc,密码对应的字符345,则认为验证通过。
反解析通过第一加密算法的逆运算得到解密序列,该解密序列与第一随机序列对应,则可以通过验证;而如果验证码是暴力破解软件直接生成的,则通过验证的可能性就会很低。这里的对应可以是解密序列与第一随机序列相同、与第一随机序列指定的字符串位数相同、或者由第一随机序列通过预定的算法得到等。
进一步的,如图3所示,步骤A4中,当解密序列与第一随机序列不对应时,服务器指示第二随机序列和第二加密算法给客户端。客户端将第二随机序列和第二加密算法分别替代第一随机序列和第一加密算法。
加密算法可以是每过一段时间做一次调整,也可以同随机序列一样随机生成,故第二加密算法可以与第一加密算法相同也可以与之不同,第二随机序列与第二加密算法替代第一随机序列和第一加密算法后作为随机验证信息,等待下一次按键提交时用以加密运算。
进一步的,如图4所示,该动态验证的方法还包括以下步骤:
A5、在步骤A4通过验证后,服务器判断登陆信息是否正确,如果是,则返回登陆成功信息,否则返回登陆失败信息,且指示第三随机序列和第三加密算法给客户端。客户端将第三随机序列和第三加密算法分别替代第一随机序列和第一加密算法。
登陆信息包括用户名、注册邮箱或注册序号等,以及相应的密码,服务器对上述信息进行验证,如果其中之一与预先存储于服务器的信息不同,则无法成功登陆。
根据前面的叙述,第三加密算法可以与第一加密算法相同也可以与之不同,第三随机序列与第三加密算法替代第一随机序列和第一加密算法后作为随机验证信息,等待下一次按键提交时用以加密运算。
本发明的第一随机序列与第一加密算法可以是前一次登陆错误时指示给客户端的,但如果前一次登陆成功,先前的验证信息可能被删除,此时就需要另行安排指示。
优选的,如图5所示,步骤A1之前还包括以下步骤:
A0、在客户端发送登陆页面打开请求后,服务器返回登陆页面,并将第一随机序列和第一加密算法指示给客户端。
这里的发送登陆页面打开请求包括在地址栏输入网页地址时的请求、在相应网页点击登陆时的请求及用户退出登陆时或重新登陆时的请求。当用户发出上述请求后,服务器将第一随机序列和第一加密算法指示给客户端,客户端将其保存并在下一次按键提交登陆信息时用于加密。
此外,本发明的验证信息除了上述实施例公开的随机序列,还可以是某些验证文件或图形标识,客户端对这些文件或图形进行加密以防止被黑客拦截并打开,于是对文件或图形本身加密。当服务器收到该加密后的文件或图形后,对其进行反解析,得到原来的图形。
进一步的,随机加密算法也可以从客户端生成,此时加密验证信息中将包含相应的算法信息以告知服务器其采用的算法,算法信息可以通过特定密钥加密的完整的算法,也可以是相应的算法序号。
当验证文件同样为随机序列及相应的加密算法时,服务器的解密算法也可以并非加密算法的逆运算,其解密序列可以与原随机序列不同,由于解密序列的理论值算法也已确定,故只需对比解密序列与理论上确定的序列是否对应即可。故,验证信息的处理方式可以是任意可行的方案,此处不再一一赘述。
本发明还提供了一种动态验证的系统,该系统包括相互通信连接的客户端和服务器。
其中,客户端用于检测到登陆信息的按键提交后,在检测到按键提交登陆信息后读取服务器预先发送给客户端的随机验证信息并进行加密得到加密验证信息;客户端还用于通过网页隐式参数传递的方式将加密验证信息发送给服务器。本发明的按键提交包括通过鼠标点击页面的提交按键及通过键盘按键、如回车键确认等。
服务器用于将加密验证信息反解析后得到解密验证信息,判断解密验证信息是否符合要求,并在符合要求时通过验证,否则向客户端返回验证失败的信息。
本发明的系统通过按键确认作为提交的指示信号,由于大多数暴力破解软件都是通过程序触发确认指令,在本发明中这些暴力破解软件将无法自动通过穷举法破解密码,同时本发明通过网页隐式参数的方式传输数据。网页隐式参数传递是指一个页面的参数传递给另一个页面时地址栏后面隐藏相关的参数。而且验证信息及加密算法也是随机生成,破解软件难以获取符合要求的加密验证信息。本发明的验证信息不显示的页面中,并且与服务器之间的传输通过网页隐式参数传递的方式,无需用户填写任何验证信息,方便用户使用。
本发明一个优选的实施例中,随机验证信息和随机加密算法分别包括服务器预先指示给客户端的第一随机序列和第一加密算法。其中,服务器指示随机验证信息及随机加密算法的方式可以是直接发送给客户端,也可以是指示客户端根据其存储或接收的信息动态生成,或者对登陆信息进行拼接、截取等方式生成。非直接发送的方式可以是直接在客户端预设加密算法库,在指示时只需发送相应算法的代号或序号即可。加密算法库可以是以js文件的格式预先设置在浏览器或相应登陆软件的安装文件中,或者再第一次请求登陆时返回给客户端。
如图6所示,客户端1包括:
检测单元101,用于检测登陆信息的按键提交;
存储单元102,用于存储第一随机序列和第一加密算法;
加密单元103,用于读取第一随机序列和第一加密算法,并通过第一加密算法对第一随机序列进行加密,得到加密验证序列;
第一通信单元104,用于将加密验证序列与登录信息一起发送给服务器2。
相应的,服务器2包括:
第二通信单元201,用于接收加密验证序列与登录信息,
验证信息生成单元202,用于随机生成第一随机序列和第一加密算法;
解密单元203,用于将加密验证序列反解析得到解密序列;
判断单元204,用于对比解密序列与第一随机序列是否对应,并在对应时通过验证,否则通过第二通信单元201向客户端返回验证失败的信息。
该实施例中的第一随机序列可以是数字字母组成的字符串,二进制字符串、十六进制字符串或其他形式的字符串,这些字符串是通过记载与文件中并与文件一同发送给客户端,如文本文件;也可以是作为某些文件的文件号并随该文件发送至客户端,如Cookie文件的CookieID;或也可以是通过服务器指定根据登陆信息的用户名、密码等拼接截取得到的字符串。该实施例的第一加密算法一般记载在js文件中,js文件即将Javascript脚本放入一个文件类并以js扩展名命名一种文本脚本。第一加密算法可以是对字符串某一位字符进行加减运算、将字符串与另一字符串相加减、字符串拼接截取或倒置、二进制字符取反或者上述可能的运算方式中几种的结合。
举例来说,第一随机序列为“a576f3”,第一加密算法是对字符串的ASCII码加上“130043”后将左边第2位减“4”,于是得到的加密验证序列则为“b476j6”;此外,也可是第一随机序列为“101110”,第一加密算法为取反,则得到的加密验证序列为“010001”;再如,第一随机序列是用户名abcd和密码123456,第一加密算法为截取用户名第2-3位及密码3-5位,将用户名的两位字符分别穿插到密码的三个字符中,得到加密验证序列3b4c5,服务器反解析得到用户名对应的字符bc,密码对应的字符345,则认为验证通过。
反解析通过第一加密算法的逆运算得到解密序列,该解密序列与第一随机序列对应,则可以通过验证;而如果验证码是暴力破解软件直接生成的,则通过验证的可能性就会很低。这里的对应可以是解密序列与第一随机序列相同、与第一随机序列指定的字符串位数相同、或者由第一随机序列通过预定的算法得到等。
进一步的,判断单元204还用于在解密序列与第一随机序列不对应时指示验证信息生成单元202随机生成第二随机序列和第二加密算法;验证信息生成单元202通过第二通信单元201指示第二随机序列和第二加密算法给客户端。
存储单元102将第二随机序列和第二加密算法分别替代第一随机序列和第一加密算法。
加密算法可以是每过一段时间做一次调整,也可以同随机序列一样随机生成,故第二加密算法可以与第一加密算法相同也可以与之不同,第二随机序列与第二加密算法替代第一随机序列和第一加密算法后作为随机验证信息,等待下一次按键提交时用以加密运算。
进一步地,服务器2还包括:
登陆信息验证单元205,用于在解密序列与第一随机序列不对应后判断登陆信息是否正确,并在正确时返回登陆成功信息,否则返回登陆失败信息,且指示验证信息生成单元随机生成第三随机序列和第三加密算法;验证信息生成单元通过第二通信单元201指示第三随机序列和第三加密算法给客户端1。
客户端1的存储单元102将第三随机序列和第三加密算法分别替代第一随机序列和第一加密算法。
登陆信息包括用户名、注册邮箱或注册序号等,以及相应的密码,服务器对上述信息进行验证,如果其中之一与预先存储于服务器的信息不同,则无法成功登陆。
根据前面的叙述,第三加密算法可以与第一加密算法相同也可以与之不同,第三随机序列与第三加密算法替代第一随机序列和第一加密算法后作为随机验证信息,等待下一次按键提交时用以加密运算。
本发明的第一随机序列与第一加密算法可以是前一次登陆错误时指示给客户端1的,但如果前一次登陆成功,先前的验证信息可能被删除,此时就需要另行安排指示。
优选的,客户端1还用于通过第一通信单元104向服务器2发送登陆页面打开请求。
服务器2还用于返回登陆页面,并将第一随机序列和第一加密算法通过网页隐式参数传递的方式指示给客户端1。
这里的发送登陆页面打开请求包括在地址栏输入网页地址时的请求、在相应网页点击登陆时的请求及用户退出登陆时或重新登陆时的请求。当用户发出上述请求后,服务器2将第一随机序列和第一加密算法指示给客户端1,客户端1将其保存并在下一次按键提交登陆信息时用于加密。
此外,本发明的验证信息除了上述实施例公开的随机序列,还可以是某些验证文件或图形标识,客户端1对这些文件或图形进行加密以防止被黑客拦截并打开,于是对文件或图形本身加密。当服务器2收到该加密后的文件或图形后,对其进行反解析,得到原来的图形。
进一步的,随机加密算法也可以从客户端生成,此时加密验证信息中将包含相应的算法信息以告知服务器其采用的算法,算法信息可以通过特定密钥加密的完整的算法,也可以是相应的算法序号。
当验证文件同样为随机序列及相应的加密算法时,服务器2的解密算法也可以并非加密算法的逆运算,其解密序列可以与原随机序列不同,由于解密序列的理论值算法也已确定,故只需对比解密序列与理论上确定的序列是否对应即可。故,验证信息的处理方式可以是任意可行的方案,此处不再一一赘述。
综上所述,本发明通过按键确认作为提交的指示信号,由于大多数暴力破解软件都是通过程序触发确认指令,在本发明中这些暴力破解软件将无法自动通过穷举法破解密码,同时本发明通过网页隐式参数的方式传输数据。网页隐式参数传递是指一个页面的参数传递给另一个页面时地址栏后面隐藏相关的参数。而且验证信息及加密算法也是随机生成,破解软件难以获取符合要求的加密验证信息。本发明的验证信息不显示的页面中,并且与服务器之间的传输通过网页隐式参数传递的方式,无需用户填写任何验证信息,方便用户使用。