【Web开发】API 接口限流(Rate Limiting)的最佳实践是什么?
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
——按 IP、UID 还是 Token? 一、为什么 API 限流越来越重要?在现代互联网应用中,API 已经成为业务系统最重要的入口。用户登录、查询订单、发送验证码、支付、修改资料……几乎所有业务操作,最终都会转换成一次 API 请求。例如用户登录对应 如果 API 没有限制访问频率,就意味着任何人都可以无限调用接口。攻击者可能利用这一点:不断尝试用户名密码进行暴力破解;无限请求短信验证码导致短信资源被刷;高频调用查询接口爬取大量业务数据;大量请求消耗服务器资源造成服务不可用。因此,API 限流(Rate Limiting)已经成为企业 API 安全防护中的基础能力。 很多开发人员知道要做限流,但是经常会遇到一个问题:API 限流到底应该按照什么维度限制?按 IP?按用户 UID?还是按照 Token?实际上,单独依赖任何一种方式都存在问题,真正安全的 API 限流通常需要结合多种维度。 二、什么是 API 限流?简单来说,API 限流就是限制某个对象在单位时间内可以访问接口的次数。例如一分钟内用户 A 最多请求登录接口 10 次,某个 IP 地址最多请求接口 100 次,某个 Token 最多调用查询接口 500 次。超过限制后,系统返回 HTTP 429 Too Many Requests,表示请求太频繁,请稍后再试。 正常请求返回: 超过限制则返回: 三、为什么只按照 IP 限流不够?很多系统最开始设计限流时,会采用同一个 IP 一分钟只能访问多少次的策略。例如 IP 第一,NAT 环境导致误伤。 现在很多企业、学校、家庭网络都是多个用户共享一个公网 IP,例如公司出口公网 IP 第二,攻击者可以通过代理绕过。 攻击者不会一直使用一个 IP,而是不断切换 第三,移动网络 IP 经常变化。 手机用户使用 4G/5G 网络时 IP 不断变化,如果按照 IP 限制,可能导致限制效果不好,正常用户体验下降。所以 IP 限流适合作为第一层防护,但不能作为唯一方案。 四、按照 UID 限流有什么问题?UID(用户 ID)限流就是按照登录用户进行限制。例如用户 ID 第一,未登录接口无法使用 UID。 例如登录接口 第二,攻击者可以批量注册账号。 例如短信验证码接口 五、Token 限流是否更安全?Token 限流就是按照访问凭证限制。例如 但是 Token 限流也不是万能的。问题在于 Token 泄露怎么办?如果攻击者获取了 Access Token 六、企业最佳实践:不要选择一个维度,而是组合限流实际企业系统中,更推荐多维度联合限流。例如登录接口 七、常见限流算法有哪些?1. 固定窗口算法这是最简单的算法。例如 10:00-10:01 允许 100 次请求。缺点是边界容易被突破,攻击者可以在 10:00:59 发送 100 次请求,然后在 10:01:00 再次发送 100 次请求,短时间内 200 次请求通过。 2. 滑动窗口算法解决固定窗口问题。系统记录最近一分钟请求数量,例如 10:00:30 - 10:01:30 统计请求数量,精度更高。 3. 令牌桶算法(企业最常用)令牌桶可以理解为系统提前放入一些"访问令牌",每请求一次消耗一个令牌。例如桶容量 100 个令牌,每秒生成 10 个令牌。正常情况快速消耗是允许的,超过则等待或者拒绝。优点是支持突发流量、控制更加平滑、适合互联网业务。 4. 漏桶算法漏桶类似固定速度处理请求。例如服务器每秒处理 100 个请求,超过则排队或者丢弃。适合需要严格控制流量的系统。 八、渗透测试中如何验证 API 限流?安全测试人员不仅要发现接口,还需要验证限流是否真的有效。 1. 高频请求测试例如使用 Burp Intruder 设置 2. 修改请求参数绕过例如限制 3. Header 绕过测试尝试 4. 多账号绕过测试例如验证码接口限制手机号每天 5 次,测试多个账号请求是否可以无限发送。 九、开发/测试安全 Checklist十、总结API 限流不是简单设置"一个 IP 一分钟多少次",真正安全的限流需要根据业务场景选择不同策略。 最佳实践是:基础防护用 IP 限流,用户行为用 UID 限流,身份控制用 Token/API Key 限流,高风险业务用设备 + 风控 + 多维度限制。 对于企业应用来说,IP 解决来源问题,UID 解决用户问题,Token 解决身份问题。三者结合,才能真正降低 API 暴力破解、数据爬取、资源滥用、自动化攻击等风险。 限流不是为了限制用户,而是为了保证正常用户可以稳定使用业务,攻击者无法无限消耗系统资源。在 API 安全建设中,限流应该和认证、授权、风控一起设计,而不是上线后发现接口被刷才临时补救。 该文章在 2026/8/26 9:35:55 编辑过 |
关键字查询
相关文章
正在查询... |