2020-04-22 功能记录

短信验证码&动态口令(二次验证码)

短信验证码的发送使用的是阿里云的短信服务;动态口令使用的谷歌的动态口令算法,且需要用户下载谷歌的“身份验证器”APP配合使用。

1.使用的技术

  项目整体使用SSM框架

  用户在页面上点击发送验证码时,通过ajax获取后台数据,后台通过随机生成验证码的函数生成验证码。并将生成的验证码传递给redis(相比于session传递值,redis传递减少被截获的风险),由redis控制验证码有效期,在用户输入验证码并点击下一步的时候,也是通过ajax进行前后端数据交换,后端判断验证码正确与否返回控制信息给前端,若错误则继续输入,正确则跳转到目标页面。

动态口令是非常重要的安全软件,基本上我们在国内使用到的各大金融平台的账户都是可以使用到。毕竟现在网络上的黑客比较多,而我们多数人都是网络方面的“小白”,短信验证码、邮件验证码被截获;平台账户名+密码被截获,甚至支付密码被截获、……是不是很可怕?前段时间,我们知道人脸识别被破解,这种永久性和唯一性的生物特征模板数据被盗取,可能会严重损害用户隐私和生物识别系统的安全。对银行和支付宝等系统支付安全产生巨大隐患。如果真的是想要保障好我们的账户安全,那么使用了这样的二次验证,自然也可以保障好我们的权益,避免账户出现被盗风险等问题。

用户要使用动态口令时需要先获得动态口令密钥,在查看设置动态支付口令页面获取,该页面在用户有密钥时显示查看密钥,在用户没有密钥时显示获取密钥。图示为有密钥时,无密钥时显示为:“您还没有启用动态口令,点击“申请”启动付款动态口令校验”。用户点击超链接后,先进入短信验证码验证环节,验证完通过之后,通过查库确认用户是否有密钥,如果用户没有密钥则通过谷歌的创建密钥方法创建一个密钥存入数据库,并将密钥在页面上显示;有密钥则直接显示。


用户有密钥时

用户使用动态口令需将自己的用户名与动态口令密钥在“身份验证器”APP中键入。

在需要用户使用动态口令时,前台通过ajax将用户输入的动态口令传递给后端,后端通过request获取用户的用户名,通过用户名查库得到用户的密钥,并将用户的密钥和用户输入的动态口令传给谷歌的判断方法,用户输入错误则返回错误信息,正确则跳转到下一个页面。

2.过程中出现的问题:

(1)使用阿里云demo调试之前也需要先有余额

(2)传递给阿里云短信发送api的验证码要是json格式,最开始没用阿里云的json工具之前用正则写的json会把验证码开头的0给去掉。

阿里云的json工具

(3)谷歌的只通过密钥生成动态口令的方法会因为时间原因出现生成的验证码和用户输入的存在时间差一直判错的问题。通过将密钥和动态口令一起输入的方法允许用户输入的动态口令是时间轴当前和之前之后各一个。

你可能感兴趣的:(2020-04-22 功能记录)