速率限制
本文约需 2 分钟阅读
速率限制 (Rate Limiting) 是指对一定时间内接受的请求数量设定上限,从而保护服务免受过载和滥用的机制。它被广泛采用,以缓解 DDoS 攻击、抑制暴力破解攻击,并实现 API 的公平使用。截至 2025 年,随着 API 经济的扩张,速率限制已成为 API 安全的基本要求。
现场使用案例
“由于没有为 API 设置速率限制,一个客户端每秒发送 500 个请求,导致其他用户的响应延迟。采用令牌桶方式引入每秒 50 个请求的限制,并将突发容量设为 100 后,所有用户的响应时间都趋于稳定。”
速率限制流程
主要算法
固定窗口方式像“每分钟最多 100 个请求”那样以固定的时间窗口进行计量。实现简单,但存在请求在窗口边界处突发集中的问题。滑动窗口方式以最近的时间窗口进行计量,从而缓解突发问题。令牌桶方式是一种以恒定速度补充令牌、每个请求消耗一个令牌的模型,可以在限制平均速率的同时允许短时间的突发。API 设计书籍 (Amazon)可供系统性学习。
实现场景
在登录端点上,将来自同一 IP 地址的登录尝试限制为“5 分钟内最多 10 次”,以抑制凭据填充。对于 API,设置分层限制,例如对已认证用户限制为“每小时 1,000 个请求”,对未认证用户限制为“每小时 100 个请求”。超过限制时,返回 HTTP 429 (Too Many Requests) 响应以及 Retry-After 标头,告知客户端适当的等待时间。将 API 密钥管理与速率限制相结合,可以有效防止 API 的滥用。
设计要点
速率限制的阈值需要通过分析正规用户的使用模式来设定。阈值过低会损害正规用户的体验,过高则无法防御攻击。在分布式环境中,使用 Redis 等共享存储来管理计数器,从而在多台服务器之间应用一致的限制。将强随机密码与速率限制相结合,可以大幅提升登录页面的安全性。DDoS 防御书籍 (Amazon)也很有参考价值。
这篇文章对您有帮助吗?