mcpField
R
rate-limiting

rate-limiting

github.com/dev-toolings安全22788 次安装4 周前更新
代码仓库

关于 rate-limiting

面向 Symfony 的限流技能,用于为端点及其他调用行为设计和应用速率限制。它指导算法选择、调用方识别、响应处理与测试,并强调限流不能替代授权。

主要功能

  1. 01比较滑动窗口、令牌桶和固定窗口
  2. 02定义限流速率与突发量
  3. 03在控制器、服务或订阅器中应用限流
  4. 04返回带 Retry-After 的 429 响应
  5. 05测试放行、拒绝与重置

适用场景

  1. 01限制登录和密码重置尝试
  2. 02限制公共 API 或写入请求
  3. 03按流量模式选择限流算法

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dev-toolings/superpowers-symfony --skill rate-limiting

安装后在 Claude Code 中输入/rate-limiting确认已加载。

附带文件reference.md

详细介绍

速率限制(Symfony)

适用场景

  • 限制调用方访问端点的频率:登录、密码重置、公共 API,以及任何公开的写入操作。
  • 在滑动窗口、令牌桶和固定窗口之间进行选择。
  • 通过控制器属性、服务或全局事件订阅器应用限流器。
  • 返回正确的 429 响应并附带 Retry-After。
  • 等待令牌释放,而不是直接拒绝请求。

默认工作流

  1. 明确限流对象,以及用于识别调用方的信息。
  2. 根据流量特征选择算法,并说明速率和突发容量。
  3. 在 framework.rate_limiter 下声明策略,每个限流器对应一项。
  4. 在拒绝请求的位置应用限流器,并以 429 响应,同时附带 Retry-After。
  5. 通过测试验证限流:通过的调用、被拒绝的调用,以及重置。

防护措施

  • 调用方身份决定计数对象。在代理后,如果客户端地址不可信,所有人都会被视为同一个调用方。
  • 限流器不负责授权。它只限制速率,从不决定权限。
  • 使用 429 和 Retry-After 拒绝请求,绝不能静默丢弃请求或返回 500。
  • 存储按进程隔离的限流器无法跨多个工作进程进行限流。
  • 预留令牌会阻塞调用进程:绝不要在 Web 请求中这样做。

渐进式披露

  • 使用此文件了解执行规范和风险控制。
  • 需要深入了解实现细节时,打开参考资料。

输出约定

  • 限流策略,包含每项策略所用的算法、速率和突发容量。
  • 每个限流器的应用位置,以及所依据的调用方身份。
  • 429 响应的结构,包括响应头。
  • 覆盖请求通过、请求被拒绝和重置的测试。

参考资料

  • reference.md

评论

支持 Markdown