短信平台安全需求探索

我与春风皆过客,你携秋水揽星河

  短信平台一般是指用于企业内部统一提供短信服务的系统,一般包含发送短信、校验短信验证码等功能。虽然短信平台看似功能简单,但由于目前短信功能使用非常普遍,业务场景丰富,因此它的安全性至关重要。由于工作需要,我最近整理了一份短信平台的安全需求,在此记录分享。

请求获取验证码功能接口

功能使用场景:一般由前置应用系统(渠道端)携带用户IP+用户手机号到短信平台接口获取验证码。

面临安全风险 功能安全需求设计
短信轰炸 1、限制单IP+单手机号单位时间内请求接口次数,超过限制封禁IP。
短信验证码可猜解 2、短信验证码内容不能为不安全的随机数(不要使用可预测的标识符和确认码组合)且符合强度要求(6位及以上)。
未授权手机号获取验证码 3、支持手机号黑白名单控制策略。
短信轰炸 4、短信获取接口支持防重放(在cookie中添加时间戳等方式)。
未授权应用获取验证码 5、短信获取接口支持认证校验。
短信验证码校验绕过 6、短信验证码内容不能直接通过接口返回前置应用,而是返回发送状态即可。
短信验证码内容篡改 7、短信验证码内容不能由前置应用系统传入,而是由短信平台后端定制模板与前置应用系统绑定。
绕过单手机号发送次数限制 8、对前置应用系统传入的手机号进行字符处理及格式校验,过滤非数字字符,并确保格式正确。
短信轰炸 9、单手机号请求短信验证码间隔限制(如60s),间隔内不允许再次请求验证码。
横向短信轰炸 10、针对不同前置应用系统设置单位时间内不同的请求次数阈值。(如高频率应用阈值高一些、低频率应用阈值低一些)

请求校验验证码功能接口

功能使用场景:一般由前置应用系统(渠道端)携带用户IP+用户手机号+用户输入验证码到短信平台接口校验验证码。

面临安全风险 功能安全需求设计
短信验证码爆破 1、限制单IP+单手机号单位时间内验证码校验错误次数。
短信验证码爆破 2、短信验证码生效时间限制。
短信验证码复用 3、相同短信验证码不能用于不同动作(即用户每步操作使用单独验证码来确认,如注册、登录、转账等用不同的短信验证码)。
短信验证码爆破 4、短信校验接口支持防重放(在cookie中添加时间戳等方式)。
短信验证码未授权校验 5、短信校验接口支持认证校验。
短信验证码复用 6、短信验证码在验证通过后应立即重置、失效。

  以上安全需求并不完善,待后续探讨补充。需求中相关阈值仅供参考,具体数值要结合业务实际情况决定。另外在实际场景中,可以在前置应用系统中通过添加图片验证码等方式,防止使用自动化工具批量请求接口。

nmask wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
坚持原创技术分享,您的支持将鼓励我继续创作!

热门文章推荐: