美文网首页程序员
短信验证码设计.md

短信验证码设计.md

作者: 7f2aceb77681 | 来源:发表于2018-08-03 20:04 被阅读54次

    [TOC]

    手机号一直被当作一种用户身份标识,所以产品设计中验证用户身份,通常会通过发送一串动态密码(一般是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. 短信告警机制

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

    二、用户交互设计

    短信验证码验证流程

    相关文章

      网友评论

        本文标题:短信验证码设计.md

        本文链接:https://www.haomeiwen.com/subject/sghwmftx.html