短信验证码设计.md

目录

手机号一直被当作一种用户身份标识,所以产品设计中验证用户身份,通常会通过发送一串动态密码(一般是6位随机数)到用户手机号,用户收到验证码并发回,即可验证是本人。

  1. 通过手机号验证是否是本人操作;
  2. 验证手机号正确,并获取手机号用作后续业务需要;
  3. 手机号作为登录帐号使用,支持手机号+动态密码登录;
  4. 绑定手机号,后续可通过手机号找回密码,发送促销短信通知等;

PS:在移动端,其实用于用户身份验证的方式还有很多,如指纹识别、人脸识别、sim卡验证、第三方授权登录(如微信授权登录、微博授权登录等),用户体验上比传统的短信验证好太多了。比如电信营业厅客户端就支持快捷免密登录,其实就是通过sim卡验证自动获取手机号信息。

一、短信安全设计

1. 防止CSRF攻击:增加来源验证

CSRF全称为Cross Site Request Forgery,翻译成中文是跨站点请求伪造,是攻击者通过伪装受信任的用户,发起恶意请求攻击,这有可能导致短信接口被恶意使用,群发短信,骚扰用户。

防止CSRF攻击的方法有很多:

  • 站点使用ssl协议;
  • 页面使用token验证机制;
  • 验证HTTP Referer来源;

2. 增加图形验证码:防止机器人访问

为需要短信发送功能的页面,增加图形验证码,要求图形验证码输入正确,才能进行短信验证码的获取,这样可以有效防止机器人的访问。

当然现如今的图形识别、图形库训练已经很成熟,机器人已经可以做到市面上很多图形验证码的识别,成功率99%。

3. 限流:单位时间内限制重复请求及请求数量

记录设备号、客户端IP、用户微信号等识别客户端身份标识,不允许客户端在单位时间重复发起请求,并限制客户端1小时、1天的请求数,比如60秒内不允许重复请求短信接口,一天内只允许请求短信接口20次。

4. 手机号限制:60秒倒计时及24小时发送量

针对同一个手机号,限制24小时短信发送量,限制60秒内只能发送一次(请求运营商短信接口可能存在延迟,预计60秒送达);

5. 短信告警机制

一般公司会搭建短信网关,供各业务系统调用,因此需要在网关上增加短信发送接口的监控告警,防止恶意请求,有时危险往往来自内部:)

二、用户交互设计

短信验证码验证流程

猜你喜欢

转载自www.cnblogs.com/vipinchan/p/9416067.html