短信验证码接口容易遭到恶意攻击(短信轰炸), 造成大量短信下发, 对用户造成困扰短信轰炸形成的原因是因为非授权的动态短信获取, 如用户注册时的手机验证短信, 在用户获取验证码短信前系统并不能建立业务关联因此, 在未建立业务关联的情况下, 需要进一步严格限制保证业务使用的安全性我们可以综合采用: 增加图片验证码 IP 请求次数限制单用户请求间隔时长限制 3 个措施, 来保障验证码短信接口的安全性
措施一: 使用安全的图片验证码
采用图片验证码可有效防止采用自动化工具调用验证码短信接口, 即当用户进行获取短信验证码操作前, 弹出图片验证码, 要求用户输入验证码后, 服务器端再发送验证短信到用户手机上安全的图片验证码必须满足:
生成过程安全: 图片验证码必须在服务器端进行产生与校验;
使用过程安全: 单次有效, 且以用户的验证请求为准;
验证码自身安全: 不易被识别工具识别, 能有效防止暴力破解
措施二: 单 IP 对验证码短信接口的请求次数限定
使用了图片验证码后, 能防止攻击者对验证码短信接口的自动化调用; 但若攻击者忽略图片验证码验证错误的情况, 大量执行请求会给服务器带来额外负担, 影响业务使用此时可以在服务器端限制单个 IP 在单位时间内的请求次数, 一旦用户请求次数 (包括失败请求次数) 超出设定的值, 则暂停对该 IP 一段时间的请求; 若情节特别严重, 可以将 IP 加入黑名单, 禁止该 IP 的访问请求该措施能限制一个 IP 地址的大量请求, 避免攻击者通过同一个 IP 对大量用户进行攻击, 增加了攻击难度, 保障了业务的正常开展
措施三: 单用户请求间隔时长限制
为进一步优化业务正常使用, 可以采用限制重复发送短信验证码的间隔时长, 即当单个用户请求发送一次短信验证码之后, 服务器端锁定如: 30 秒后, 才能进行第二次请求该功能可进一步保障用户体验, 并避免包含手工攻击恶意发送大量验证码短信
来源: http://www.jianshu.com/p/80ab2b45efa9