INCR sms:quota:20261114
EXPIRE sms:quota:20261114 86400
# 超过 5000 直接返回 429

早上看账单,一夜之间发了 12 万条验证码短信,费用六千多,请求全部来自两千多个 IP,目标手机号集中在几个号段。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,发送接口没有图形验证前置,手机号参数也没做格式和归属地校验,脚本换 IP 就能一直调。接口没有日限额和总量告警。

「短信轰炸」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。

接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。

处理上按这个顺序:发送前加图形验证或行为验证,通过了才允许发;按手机号、IP、接口三个维度设日限额,超了直接拒;配一条费用告警,单小时发送量超过基线两倍就通知。

改完只确认一件事:同样脚本再跑一次,第二批请求被 429 拦下,账单不再上涨。

作者 9823189