-- “隐患险于明火,防范胜于救灾,责任重于泰山”
上周三早上接到Z项目组小伙伴的求助:短信发送接口被恶意调用了,注册验证码短信在不停被发送,短信平台已经封了我们的发送通道,调用方还在孜孜不倦地调用接口,怎么搞?
Z项目是三年前进行的第一版上线,三年来一直由我们的小伙伴做更新与维护。这个问题出现后,赶紧回顾项目的相关内容。
一、回顾项目
Z项目在三年前初始上线,当时主要用户为公司内部人员,支持移动端使用。上线前时间紧迫,最简单的实现流程就是“填写手机号”->“发送验证码”->“填写验证码”->“完成注册”。同时,在这个流程中增加了一些限制:
- 手机号A在1分钟内只允许发送一次验证码a;
- 验证码a未使用的情况下,保持2分钟有效;
- 手机号A在1分钟后允许请求发送第二次验证码b,同时验证码a失效;
- 短信平台控制在一天内只能向手机号A发送X次短信(X由短信平台统一控制)。
这几条限制能保证手机号A不会产生太多次的短信请求,看似能控制住短信的成本,当时上线前也认为这样对于内部人员使用是可控的,没再进行更多分析。后续三年内系统的使用人员范围有了很大的扩展,目前Z项目的使用对全部互联网用户公开。用户范围的扩大带来更多的是处理业务、代码、数据的同步增长,唯独没有对“短信验证码发送”这样一个看似“小小的”功能是否依然合理进行过思考。
二、发现问题
问题表象很明显:恶意攻击者发现了我们的接口,并进行了利用。
那我们的问题也就一目了然&#x