注册验证码被刷了一整夜,论接口限流的重要性
前言
早上打开手机,飞书弹出几十条告警,全是同一个接口:发送验证码。
一夜之间几万次请求,同一个路径,来自几十个不同的 IP。
防火墙不是早就部署了吗,怎么没拦住?
和以前不一样
打开日志仔细看,每条请求都长得”正常”。
正常的浏览器标识,正常的请求头,参数格式也对。
攻击者发的请求本身没有恶意内容,只是在疯狂调用注册页面的发送验证码接口。
防火墙的强项是识别恶意载荷,比如 SQL 注入、跨站脚本攻击这类带武器来的请求。
但这次每条请求都是”合法”的,防火墙自然不会拦。
防火墙看的是请求里有没有恶意内容,限流看的是这个来源短时间内发了多少请求。
一个防的是带刀的贼,一个防的是空手来堵门的。
两种威胁都要防,缺一不可。
注册验证码的发送走的是邮件,和短信比起来成本不算高,但一夜几万次请求也够让人头疼的。
限流怎么做
既然防火墙拦不住,就得从另一个维度来防。
思路很简单:给接口加一道限流,限制同一来源在短时间内的请求次数,超过阈值就直接拒绝,请求根本打不到后端。
但光按 IP 限制还不够,攻击者换个代理 IP 就能绕过。
更好的做法是多维度叠加,再加上前端的人机验证,用户先完成滑动拼图才能触发发送。
这样即使攻击者绕过了限流,也卡在人机验证这一步。
限流阈值要根据实际业务流量来定,先观察正常情况下的流量峰值,再设一个略高于峰值的阈值。
设太松等于没防,设太紧会误伤正常用户。
一人企业的安全防线
这件事给我最大的感受是,安全不是一个点,而是一张网。
之前部署了防火墙,以为能挡住大部分攻击,确实也挡住了。
但防火墙挡的是带刀的贼,挡不住空手来堵门的。
限流、防火墙、监控,每一层都有自己的盲区。
只有叠在一起,才能形成真正的纵深防御。
做一人企业,没有人帮你盯着安全,也没有专门的运维团队兜底。
被攻击一次,损失的不只是钱,还有用户的信任。
把该加的防护提前加到位,远比出了事再补救划算。
你的网站接口有没有做过限流?
评论区聊聊你遇到过的安全问题。






















