一种无需存储的验证码验证方法与流程

文档序号:12739970阅读:244来源:国知局

本发明涉及一种验证码验证方法。



背景技术:

随着互联网的发展,内容越来越多的同时,也存在反抓取、反垃圾等问题,验证码是一种普遍用于拒绝机器人、脚本访问的方式,通过验证码可以区分出当前操作请求是真人还是机器脚本,可以有效拦截恶意抓取及攻击。

传统的验证码方案需要在服务端与客户端之间保持会话,将生成的验证码存储于会话之中,客户端提交验证码后进行比对。这种方法缺点明显:

1.需要在服务器中存储验证码原文直到验证码验证或者失效

2.需要客户端与服务端之间保持会话

3.对分布式环境不友好。

传统验证码方案为避免暴露验证码,需要将随机数生成器产生的验证码暂存在服务端,当访问量大时,会给服务端存储带来额外负担。在分布式环境下,需要实现分布式存储来提供多台服务器共同访问此部分数据。对于存储的有效期(定时删除过期验证码)需要额外开发程序功能实现。



技术实现要素:

本发明要解决的技术问题:针对目前的验证码需要暂存在服务器中的问题,提供了一种无需存储验证码的验证方法。

本发明技术方案:

一种无需存储的验证码验证方法包括以下步骤:一、服务器生成验证码,将验证码加密后生成加密字符串,将加密字符串和验证码一同发送给客户端:

二、客户端接收到加密字符串和验证码后显示,然后将加密字符串和用户输入的验证码发送到服务器;

三、服务器将加密字符串解密后得到验证码,与客户端发送过来的用户输入验证码进行对比,判断其是否一致。

在步骤一中,服务器还生成时间戳,将验证码和时间戳拼合后加密,在步骤三中还要对比收到时间是否和时间戳在一个规定时间差内。

使用对称加密算法进行加密和解密。

本发明的有益效果:

该方法无须任何存储或缓存,无须在客户端与服务端之间保持会话,不论在单服务器还是分布式环境下都可以工作,校验前后两次请求不需要落在同一台服务器上,可以无任何附加条件地横向扩容。

附图说明:

图1为本发明方法的流程示意图。

具体实施方式:

实施例:在服务器中有随机数生成器和密匙管理单元,实现步骤如下:

1.使用随机数生成器生成验证码。

2.将验证码和当前时间戳拼合在一起,使用对称加密算法,得到密文,发送到客户端,同时也将验证码以图片、语音、短信等方式发送给用户,用以鉴别是真人还是机器脚本。

3.客户端如果是真人,则可以识别出验证码,填写验证码后,客户端将密文及用户输入的验证码一起提交回服务端。

4.服务端接受到密文后使用对称加密算法解密得到验证码原文及时间戳,通过原文可以比对用户输入的验证码是否正确,通过时间戳可以比对验证码是否过期。

如果加密串一经破解,则通过对密钥管理单元存储的密钥进行修改,即各服务器可快速经过共享密钥服务器快速对新的加密、解密算法及时更正密钥。

对称加密算法的选择可以采用AES(高级加密标准)算法或3DES(三重数据加密算法)等国际公开、经受过理论与实际双重验证的算法。由于密钥只存在于服务端,容易保护,即使遭受保利破解导致密钥泄露,也只需要重新生成一组密钥,几乎无任何成本。

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