如今, 大量的网站网站手机 app 都在使用短信验证码作为验证用户身份的安全技术措施尤其在年底, 企业的促销抽奖互动活动会迎来一个高峰期, 用到短信验证码的场景非常频繁
但近期, 阿里云. 云盾 WAF 团队监测到, 不少用户业务的短信验证码功能被攻击, 短信接口被恶意利用, 导致业务无法正常访问同时, 被刷的短信成本也直接造成一定量的资金损失
有哪三大行业或者业务, 需要警惕短信验证码背后的风险呢?
风险业务一: 所有行业的网站登录类页面
哪些场景需警惕: 网站在线注册页面, 网站在线找回密码页面, 手机短信动态密码登录页面
风险业务二: 所有行业的在线投票类页面
哪些场景需警惕: 例如微信投票在线投票 H5 投票等
风险业务三: 电商零售金融网贷行业的活动页面
哪些场景需警惕: 活动领券页面参与活动页面
短信验证码功能被攻击的危害比想象中更大
企业用来确保安全的短信验证码, 也会把攻击吸引过来; 这一风险对企业的危害, 且听安全君说明白
攻击短信验证码功能一般直接导致企业的短信接口被刷容易发生短信接口被刷的业务场景, 包括以下三大类:
当短信接口被刷, 对于企业而言, 主要有以下危害:
1. 过多的短信接口请求导致服务器负载增加, 严重情况下导致服务器资源耗尽, 无法响应请求, 影响用户正常的访问;
2. 过多的短信接口发送, 导致正常用户无法使用短信验证服务;
3. 过多的短信接口非法调用消耗短信包资源, 从而直接导致运营成本增加
八招防范短信接口被刷
了解了风险之后, 企业也不必过度担心, 以下指南, 可帮助了解如何防范短信验证码背后的安全风险
1. 手机号码逻辑检测
在手机号码窗口增加号码有效性检测, 防止恶意攻击者使用无效或非法的号码, 从而在第一窗口屏蔽非手机号的乱码等无效数字
2. 随机校验
在注册页添加个隐藏的 < input>, 设置保存在 session 中的随机验证码, 发短信前验证一下, 保证发验证码短信请求是在业务页面点击
3. 增加友好的图形验证码
即当用户进行获取动态短信 操作前, 弹出图片验证码, 要求用户输入验证码后, 服务器端再发送动态短信到用户手机上, 该方法可有效缓解短信轰炸问题
由于当前验证码在攻防对抗中逐步被成功自动化识别破解, 我们在选用安全的图形验证码也需要满足一定的防护要求
4. 同号码短信发送频率限制
采用限制重复发送动态短信的间隔时长, 即当单个用户请求发送一次动态短信之后, 服务器端限制只有在一定时长之后(此处一般为 60-120 秒), 才能进行第二次动态短信请求该功能可进一步保障用户体验, 并避免包含手工攻击恶 意发送垃圾验证短信
5. 不同号码请求数量限制
根据业务特点, 针对不同手机号码不同访问源 IP 访问请求进行频率限制, 防止高并发非法请求消耗更多的短信包和服务器性能, 提高业务稳定性
6. 场景流程限定
将手机短信验证和用户名密码设置分成两个步骤, 用户在填写和校验有效的用户名密码后, 下一步才进行手机短信验证, 并且需要在获取第一步成功的回执之后才可进行校验
7. 启用 https 协议
为网站配置证书, 启用 https 加密协议, 防止传输明文数据被分析
8. 单 IP 请求限定
使用了图片验证码后, 能防止攻击者有效进行动态短信功能的自动化调用但若攻击者忽略图片验证码验证错误的情况, 大量执行请求会给服务器带来额外负担, 影响业务使用建议在服务器端限制单个 IP 在单位时间内的请求次数, 一旦用户请求次数 (包括失败请求次数) 超出设定的阈值, 则暂停对该 IP 一段时间的请求
若情节特别严重, 可以将 IP 加入黑名单, 禁止该 IP 的访问请求该措施能限制一个 IP 地址的大量请求, 避免攻击者通过同一个 IP 对大量用户进行攻击, 增加了攻击难度, 保障了业务的正常开展
阿里云安全专家提示, 企业可以根据业务的实际情况考虑, 从以上 8 大方式中选择并组合成最适合企业自身的防担心接口被刷方案
并且提高技术人员在实际活动中的安全意识, 提前防范风险
防止短信接口被刷最佳实践推荐
阿里云安全专家参考了大量企业进行防止短信接口被刷的策略, 总结出以下四种方式组合是防止短信接口被刷的最佳方案:
1. 使用体验更好的验证码服务防止攻击;
2. 如果需要使用短信验证码功能, 可以在短信验证码处增加滑块验证 (简单的验证码可以被破解) 防止被恶意刷短信接口
3. 在登录页面增加逻辑判断, 提高攻击门槛, 例如: 增加账号检验功能
4. 使用阿里云云盾 WAF 的数据风控功能 CC 自定义功能精准访问控制等高级防护功能对接口进行防护
来源: http://jaq.alibaba.com/community/art/show?articleid=1487