本发明涉及信息安全技术领域,具体的说,是一种防暴力破解的验证码交互方法。
背景技术:
随着互联网应用的发展,web应用和移动应用越来越多,对于用户数据至关重要的企业来说,如何保证用户数据不被泄露是一项任重道远的义务与责任,对于网络攻击者而言,通常第一步则是通过对管理系统或平台系统尝试暴力破解的方式来获取管理员或用户的登陆信息,从而登陆到管理系统获取数据,针对这一问题,有的企业采用图片验证码来防护账户被暴力破解,但是新型的攻击手段逐渐变得更加智能化,攻击者会通过页面抓取图片和ocr识别软件的方式获得验证码,从而通过机器学习的方式很快识别出来结果,同样可以实施暴力破解。
现有的静态验证码安全性较差非常容易破解;gif验证码生成困难,同时又存在被穷举的风险,安全性也不高;滑动验证码容易被识别,短信验证码有条数限制并且容易被拦截,因此我们需要一种安全性更高的验证码来保证用户的信息安全。
技术实现要素:
本发明的目的在于提供一种防暴力破解的验证码交互方法,用于解决现有技术中由于科技发展破解手段越来越厉害,导致现有的验证码交互方式都容易被破解的问题。
本发明通过下述技术方案解决上述问题:
一种防暴力破解的验证码交互方法,所述交互方法包括如下步骤:
步骤1:客户端请求验证码,服务器在接收到请求后生成验证码图片碎片;
步骤2:判断步骤1中验证码图片碎片是否生成成功,若生成成功则加密验证码信息,存储未加密的验证码碎片hash值,拼接后再次取hash值,并存储验证码数据,然后将验证码数据响应给客户端;若生成失败则响应客户端验证码系统繁忙;
步骤3:客户端判断验证码数据是否获取成功,若成功则解密部分或全部验证码信息,解密成功则展示碎片图片并进入步骤4,解密失败则结束本次验证流程;若获取失败则结束本次验证码验证流程;
步骤4:获取用户输入数据,并判断当前用户输入数据长度是否符合已解密的图片碎片,若不符合则等待用户继续输入,若符合则进入步骤5;
步骤5:判断碎片图片是否完全显示,若未完全显示则跳转步骤3;若已完全显示则处理碎片验证码的hash值,拼接结果后再次取hash值并发起接口调用验证,根据接口调用验证结果判断是否验证通过,不通过则展示提示信息并结束本次验证码流程,通过则根据hash值查询验证码数据,若验证码数据不存在或验证码结果不匹配,则响应验证失败,反之则响应验证成功并结束验证码流程。
本方法通过对普通验证码生成多个验证码组成验证码序,验证码序通过加密方式传给前端,前端再解密出第一个验证码序,当用户输入验证码序对应的长度个数后,后台解密下个验证码序,即通过输入交互的方式逐步展现整个验证码,直到整个验证码图片被完全展示出来。最后根据验证码序的hash值及对应的验证码结果返回给后台进行验证。这个方式能有效防止图片被ocr软件获取,同时避免短信验证码的短板被重放攻击,很好的解决了现有验证码方式存在的易被破解的问题。
优选地,所述步骤2中验证码数据存储在redis验证码缓存中。
优选地,所述步骤2中的加密方法为对称加密或非对称加密,可根据实际程序的设计进行选择。
本发明与现有技术相比,具有以下优点及有益效果:
本发明通过对普通验证码生成多个验证码组成验证码序,验证码序通过加密方式传给前端,前端再解密出第一个验证码序,当用户输入验证码序对应的长度个数后,后台解密下个验证码序,即通过输入交互的方式逐步展现整个验证码,直到整个验证码图片被完全展示出来。最后根据验证码序的hash值及对应的验证码结果返回给后台进行验证。这个方式能有效防止图片被ocr软件获取,同时避免短信验证码的短板被重放攻击。
附图说明
图1为本发明的防暴力破解的验证码交互方法流程示意图。
具体实施方式
下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。
实施例1:
结合附图1所示,一种防暴力破解的验证码交互方法,包括如下步骤:
步骤1:客户端请求验证码,服务器在接收到请求后生成验证码图片碎片;
步骤2:判断步骤1中验证码图片碎片是否生成成功,若生成成功则采用对称加密验证码信息,存储未加密的验证码碎片hash值,拼接后再次取hash值,并存储验证码数据于redis验证码缓存中,然后将验证码数据响应给客户端;若生成失败则响应客户端验证码系统繁忙;
步骤3:客户端判断验证码数据是否获取成功,若成功则解密部分或全部验证码信息,解密成功则展示碎片图片并进入步骤4,解密失败则结束本次验证流程;若获取失败则结束本次验证码验证流程;
步骤4:获取用户输入数据,并判断当前用户输入数据长度是否符合已解密的图片碎片,若不符合则等待用户继续输入,若符合则进入步骤5;
步骤5:判断碎片图片是否完全显示,若未完全显示则跳转步骤3;若已完全显示则处理碎片验证码的hash值,拼接结果后再次取hash值并发起接口调用验证,根据接口调用验证结果判断是否验证通过,不通过则展示提示信息并结束本次验证码流程,通过则根据hash值查询验证码数据,若验证码数据不存在或验证码结果不匹配,则响应验证失败,反之则响应验证成功并结束验证码流程。
通过对普通验证码生成多个验证码组成验证码序,验证码序通过加密方式传给前端,前端再解密出第一个验证码序,当用户输入验证码序对应的长度个数后,后台解密下个验证码序,即通过输入交互的方式逐步展现整个验证码,直到整个验证码图片被完全展示出来。最后根据验证码序的hash值及对应的验证码结果返回给后台进行验证。这个方式能有效防止图片被ocr软件获取,同时避免短信验证码的短板被重放攻击,很好的解决了现有验证码方式存在的易被破解的问题。
尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本技术公开的原则范围和精神之内。