News & Insights

短信接口一晚被刷两万条,后端系统开发的防刷防线

注册接口被脚本一晚刷两万条短信,光短信费就四千多。本文以真实案例拆解后端系统开发的防刷防线:验证码前置、手机号与IP双重频率限制、接口限流策略、异常量告警,并提醒内部接口别裸奔在公网,帮企业在被刷之前把闸门建好。

短信接口一晚被刷两万条,后端系统开发的防刷防线

一个做会员商城的客户早上被账单吓醒:短信平台显示昨晚发出两万多条验证码短信,可当天注册用户不到一百个。排查日志才发现,注册接口被人用脚本批量调用,同一个IP一秒请求了三十次。一晚上四千多块短信费打了水漂,这种事在后端系统开发里特别典型,防线不是不能建,是很多项目压根没建。

防刷要一层一层设卡

第一道闸是验证码前置:发短信之前先过一道图形验证码或滑块,脚本的自动化流程就被拦下大半。第二道是频率限制,分两个维度同时做:同一个手机号一天最多收十条,间隔一分钟起步;同一个IP一小时最多请求二十次,超出直接拒绝。第三道才是接口限流,整个接口设个总闸,每秒超过多少请求就排队或拒绝,防止洪水冲垮服务器。三层下来,脚本的成本高到不值得动手,刷子自然就走了。

限流不用高深算法

  • 最简单的计数器就够用:手机号做键,一分钟内计数超了就拒绝,Redis两条命令的事;
  • 拒绝要干脆,返回明确的错误提示,别让请求挂着等,占着资源;
  • 告警必须配上:短信发送量一小时超过五百条就通知管理员,当晚就能止损,而不是第二天看账单才发现。

那位客户的系统补救只花了一天:验证码前置加双重频率限制加量级告警,之后再没被刷过。成本不到当初短信损失的十分之一,防刷这类活,做在事前和做在事后,价格差出一个数量级,这也是后端系统开发报价里最值得提前谈的一条。

还要提醒一句容易被忽略的地方:内部接口别裸奔。有些团队把导出、查询这类接口直接挂在公网上,连登录校验都没有,被扫到就是批量拖数据。不对外提供能力的接口,要么收进内网,要么加上鉴权和访问限制,这是底线,不是可选项。防刷的本质和防盗一样,不追求绝对拦住,而是让动手的成本高过收益,刷子自然就散了。

签约时就该问的事

验收系统时拿几个具体问题问开发方:发短信接口有没有频率限制,限的是多少?验证码前置有没有?发送量异常谁在什么时候知道?这三个问题都答得上来,防线基本在;支支吾吾的,就要留个心眼。

两条建议:涉及短信、支付、营销发券的接口,立项时就把防刷要求写进需求文档,验收时拿工具实测连点二十次看反应;已经在线上跑的系统,让比格网络这类团队做一次接口暴露面排查,把没设防的口子找出来补上,花的钱肯定比下一次被刷少。

分享这篇文章:

准备好开启您的数字化之旅了吗?

让我们一起打造专业、高效、可增长的企业官网

✓ 链接已复制到剪贴板
电话咨询 免费咨询 获取方案
跳转咨询表单 免费获取方案 18942912117 在线咨询