如何防止接口被恶意刷?

一、网络层防护(第一道屏障,防火墙/IP白名单/HTTPS加密)

1. 防火墙(硬件/云防火墙)

  • 基础能力:过滤非法数据包、封禁恶意端口、拦截端口扫描;
  • 抗攻击:限流清洗DDoS、封禁高频攻击IP,抵御大量无效连接;
  • 拦截恶意流量:过滤携带攻击载荷的报文,阻断蠕虫、扫描探测行为。
    局限:只能基于IP、端口、流量包特征拦截,无法区分同一IP下多个正常/恶意用户。

2. IP白名单

适用场景:内部服务调用、第三方合作对接、高危核心接口(开通会员、支付、内部审核)

  • 实现:配置中心(Apollo/Nacos)动态维护,量大入库持久化;
  • 逻辑:仅名单内IP允许访问,泄露接口地址、参数也无法调用;
  • 特殊优化:内部服务通过内网域名/Feign调用,公网无法直达,可免白名单;
  • 短板:攻击者若控制白名单内网机器则失效,需配合内网防火墙加固。

3. HTTPS传输加密(防抓包篡改、窃取接口参数)

原始HTTP三大风险:明文窃听、身份伪造、报文篡改;

HTTPS = HTTP + TLS加密 + 身份证书校验 + 报文完整性校验;

作用:防止黑客抓包拿到接口入参、Cookie、签名信息,避免被伪造请求刷接口。

二、网关层统一拦截(全局统一管控,所有请求必经网关)

网关是所有接口的统一入口,把限流、鉴权、黑名单、验证码校验收敛到网关,不用每个业务接口重复开发:

  1. 统一流量限流:全接口、单接口粒度限流;
  2. 统一身份鉴权:登录态校验、权限拦截;
  3. 请求过滤:拦截非法UA、恶意IP、异常请求头;
  4. 统一监控告警 :聚合全链路调用日志,统计QPS突增;
    主流网关:Spring Cloud Gateway、Nginx、Kong、Sentinel Gateway。

三、流量限流(核心手段,解决高频刷接口,分多种粒度)

1. 业务层落地方案(短信接口经典案例)

两层限流组合,杜绝单手机号疯狂刷短信:

1)短时间窗口限流(60s/条)

Redis Key=手机号,过期60s,控制1分钟只能发1条,防止短时间狂轰;

2)每日总量限流(单手机号日上限10条)

Redis Key=手机号+日期,过期24h,限制单日总条数;

两层校验同时生效,避免攻击者定时循环刷接口。

2. 通用限流算法(面试必问)

  • 固定窗口、滑动窗口、漏桶、令牌桶(Sentinel默认令牌桶)

3. 限流维度(多维度组合拦截)

  • 按IP限流:单IP每秒请求上限;
  • 按用户ID/手机号限流:登录用户、短信场景;
  • 按接口维度:高危接口(短信、注册、支付)单独收紧阈值;
  • 按设备号:APP端防止一台设备批量注册。

四、身份与权限鉴权(区分正常用户与匿名攻击者)

1. 登录态校验

未登录匿名用户直接拦截,仅登录用户可访问业务接口;

从请求上下文获取token解析用户信息,token失效/不存在直接返回401。

2. 功能权限控制

核心操作接口(订单审核、退款、会员开通)增加权限校验:

  • 自定义权限注解标注接口所需权限点;
  • 网关/拦截器统一拦截,匹配当前用户权限,无权限直接拒绝。

3. 接口签名(对外开放API必备,补充你原文遗漏的加分项)

第三方开放接口不能只靠IP白名单,需要请求签名

双方约定AppKey + AppSecret,请求携带时间戳、随机nonce、参数签名;

校验逻辑:

  1. 校验时间戳,拒绝5分钟前过期请求(防重放攻击);
  2. 用秘钥重新计算签名,和客户端上传签名比对,不一致直接拦截;
    防止参数篡改、接口被盗刷。

五、人机验证(验证码,拦截脚本自动化刷接口)

针对注册、短信、找回密码等匿名高危接口,区分机器脚本和真人:

  1. 图形验证码:简单易破解,仅做基础防护;
  2. 滑块/点选行为验证码(极验、阿里云验证码):采集滑动轨迹,机器难以模拟;
  3. 短信验证码:二次校验,但必须搭配限流,否则高额扣费;
    短板:仅能拦截自动化脚本,无法阻止批量真实手机号循环刷,必须配合限流。

六、监控告警+事后处置(兜底发现与止损)

  1. 日志埋点:网关打印全量请求日志(IP、用户ID、接口、时间、返回码);
  2. 流量监控:监控单IP/单手机号QPS突增、错误码暴涨;
  3. 自动告警:超过阈值推送短信/钉钉/邮件预警;
  4. 人工处置:发现恶意IP/手机号,动态加入黑名单,网关直接永久拦截;
  5. 长效方案:建立恶意IP库,定期同步到防火墙、网关。

七、完整分层防御总结(面试收尾总结,逻辑闭环)

从外到内多层防护,层层拦截,单一方案存在漏洞,必须组合使用:

  1. 网络层:防火墙清洗DDoS、IP白名单拦截非法服务调用、HTTPS加密防抓包;
  2. 网关层:统一入口,实现全局限流、黑名单、请求过滤、监控告警;
  3. 身份层:登录鉴权、接口权限、开放API签名校验;
  4. 人机层:滑块/短信验证码拦截自动化脚本;
  5. 业务限流层:基于手机号/用户ID/IP做多维度时间窗口限流;
  6. 事后兜底:实时监控异常流量,发现攻击后拉黑恶意账号/IP。
相关推荐
大圣编程6 小时前
Java 多维数组详解
java·开发语言
ylscode8 小时前
OpenSSH 10.4 正式发布:后量子加密落地,多项高危漏洞得到修复
网络·安全·网络安全
万法若空8 小时前
【算法-查找】查找算法
java·数据结构·算法
葫芦和十三8 小时前
图解 MongoDB 30|查询路由与广播查询:带片键定向,不带就广播
后端·mongodb·agent
葫芦和十三9 小时前
图解 MongoDB 29|分片键陷阱:jumbo chunk、孤儿文档和写入热点
后端·mongodb·agent
进击的程序猿~9 小时前
Go Zero源码阅读1
后端·golang
2601_9615934210 小时前
Rust 开发环境配置繁琐?RustRover 开箱即用搞定编码调试
开发语言·后端·macos·rust
HZZD_HZZD11 小时前
DL/T 645-2026新国标深度解读与智能电表协议适配实战:从帧结构变化到Java采集器升级的全链路改造方案
java·开发语言
犀利豆12 小时前
AI in Harness(三)
人工智能·后端