验证码的实现逻辑

什么是验证码

证明你是人,证明你是你。

为什么要验证码?

防止机器人模拟人去做无意义的事,机器人也就程序员.

实现方案

验证码目的是为难计算机,不为难人.

  • 证明你是人
  1. 文本验证码
    如:一加一等于几?

  2. 图形验证码
    如:看图写字,挑选相同,找你妹

  3. 语音验证码
    如:听写模式和读文字模式

  4. 互动验证码
    如:拖动一下,滑动一下,按规则点击

  5. 行为验证码
    主要利用收集设备或账户的上网行为数据,分析是出是人是鬼.

  • 证明你是你
  1. 手机短信验证码
    注册账号是常用,证明手机号是你的.有收短信和发短信两种。

  2. 手机语音验证码
    收到一个电话录音,输入录音内容。

  3. 邮箱,即时通工具接收验证码。

  4. 生物识别
    指纹识别,语音识别,人脸识别。

  5. 朋友圈验证码
    利用朋友圈关系,由多个朋友同时验证,常见于密码找回。

技术实现

在这里只讨论“证明我是人”的web实现

  • 服务器端实现,保存到会话session中。
第1步 ,服务端生成随机串。
第2步, 随机串放到session中。
第3步, 生成随机串图形。
第4步, 检查用户输入和session中随机串是否一致。
  • 服务器端实现(验证码+时间戳+客户端标识+干扰串+密钥,des加密),客户端保存此验证码。
第一步:生成随机串
第二步:把随机串+时间戳+客户端标识+干扰串,用DES加密,得到密串
第三步:用随机串生成图片
第四步:把随机图片+密串保存到客户端
第五步:服务端解密密串,对比用户输入
  • 基于数据库(建议使用redis)
第1步,生成随机串和token
第2步,使用token作为hashMap的键,存储随机串,时间,客户端信息,应用信息
第3步,返回token和随机串图片给客户端
第4步,验证客户端输入和token的内容有效性

安全

  • 限制IP地址与客户端。
  • 限制验证次数。
  • 限制有效时长。
  • 避免跨设备验证的情况。

感谢

感谢一下文章的作者:
阿金叔叔

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值