什么是验证码
证明你是人,证明你是你。
为什么要验证码?
防止机器人模拟人去做无意义的事,机器人也就程序员.
实现方案
验证码目的是为难计算机,不为难人.
- 证明你是人
-
文本验证码
如:一加一等于几? -
图形验证码
如:看图写字,挑选相同,找你妹 -
语音验证码
如:听写模式和读文字模式 -
互动验证码
如:拖动一下,滑动一下,按规则点击 -
行为验证码
主要利用收集设备或账户的上网行为数据,分析是出是人是鬼.
- 证明你是你
-
手机短信验证码
注册账号是常用,证明手机号是你的.有收短信和发短信两种。 -
手机语音验证码
收到一个电话录音,输入录音内容。 -
邮箱,即时通工具接收验证码。
-
生物识别
指纹识别,语音识别,人脸识别。 -
朋友圈验证码
利用朋友圈关系,由多个朋友同时验证,常见于密码找回。
技术实现
在这里只讨论“证明我是人”的web实现
- 服务器端实现,保存到会话session中。
第1步 ,服务端生成随机串。
第2步, 随机串放到session中。
第3步, 生成随机串图形。
第4步, 检查用户输入和session中随机串是否一致。
- 服务器端实现(验证码+时间戳+客户端标识+干扰串+密钥,des加密),客户端保存此验证码。
第一步:生成随机串
第二步:把随机串+时间戳+客户端标识+干扰串,用DES加密,得到密串
第三步:用随机串生成图片
第四步:把随机图片+密串保存到客户端
第五步:服务端解密密串,对比用户输入
- 基于数据库(建议使用redis)
第1步,生成随机串和token
第2步,使用token作为hashMap的键,存储随机串,时间,客户端信息,应用信息
第3步,返回token和随机串图片给客户端
第4步,验证客户端输入和token的内容有效性
安全
- 限制IP地址与客户端。
- 限制验证次数。
- 限制有效时长。
- 避免跨设备验证的情况。
感谢
感谢一下文章的作者:
阿金叔叔