短信验证码防刷:从频率限制到风控策略的完整设计

admin 验证码与短信 2026-11-10 7 0

先理解攻击成本:短信接口没有身份门槛,一个循环就能把余额刷空。所以防护的第一原则是「先卡住请求量,再谈识别」。

一、四层防护,从便宜到贵

层手段拦住什么成本
1图形/行为验证前置脚本直刷极低
2手机号频控(60s / 10 次每日)单号轰炸极低
3IP / 设备频控单机批量低
4号段与行为风控代理池 + 虚拟号中

四层要同时上。只做手机号频控,攻击者换个号就绕过;只做 IP 限流,代理池一秒破。

二、频控的具体参数

同一手机号:60 秒内 1 条,24 小时 5–10 条
同一 IP:每小时 10 条,24 小时 30 条
同一设备指纹:每小时 10 条
同一号段(前 7 位):每分钟 100 条

最后一层最容易被忽略,但它拦得住「用一万个不同号码但都是同一号段」的攻击——那是虚拟号商的典型特征。

三、图形验证码放哪一步

不要一上来就弹验证码——正常用户会烦。正确做法是分级触发:

  1. 前 2 次请求直接放行;
  2. 第 3 次起要求图形验证;
  3. 触发风控后改为「滑动 + 点选」双验证;
  4. 仍异常则直接拒绝并记录。

这个设计让 95% 的正常用户体验不到验证码,而攻击者的成本翻十倍。

四、号段与虚拟号识别

三类可疑号码:

  • 虚拟运营商号段(170/171 等):不拒绝,但降低配额;
  • 号码段集中:同一前 7 位短时间内大量请求;
  • 号码格式异常:不合规的号码直接拒,不要浪费短信费。

五、服务商侧的兜底

自己做得再好,也要在服务商那边设一层:

  • 日发送量上限:超过自动告警,避免一夜刷空;
  • 单号码日上限:服务商层面通常可配;
  • 发送速率上限:防止瞬间并发打满通道;
  • 余额告警:余额低于阈值推送到手机。

这四条是最后的保险,设置成本几分钟,能挡住大部分灾难。

六、被刷之后怎么止损

1. 立刻关闭短信发送开关(业务侧降级为图形验证)
2. 服务商后台封禁异常号段
3. 查日志定位来源 IP、UA、时间规律
4. 补上缺失的那一层防护,再逐步放开

第一条最重要——很多人边查边放行,账单继续涨。

七、一个反直觉的建议

不要在验证码短信里放任何可以「验证成功」的信息。有人会把接口返回的验证码直接写进日志或返回体,被刷的时候等于免费送验证码。

短信内容只放验证码和使用场景,不放订单号、金额、用户信息。

接口接入的基础流程见 新做的网站如何接入验证码短信;发送失败排查见 验证码短信发送失败都有哪些原因。

相关阅读

← 上一篇 QQ 安全中心:那些 QQ 设置里没有的安全选项 下一篇 → 短信签名与模板报备:审核不过的六个原因和写法

评论

https://zzgzs.com/?id=392
访问统计