mcpField
A
api-rate-limiting

api-rate-limiting

github.com/aj-geddesセキュリティ373642 回インストール34 週間前に更新
リポジトリ

api-rate-limiting について

APIの保護とトラフィック管理に使うレート制限スキルです。ユーザー、IP、エンドポイント単位の制限に加え、アルゴリズムや実装のリファレンスを扱います。

主な機能

  1. 01ユーザー、IP、エンドポイント別の制限
  2. 02トークンバケットとスライディングウィンドウのガイド
  3. 03Redisベースのレート制限
  4. 04段階別の制限とクォータ
  5. 05レート制限レスポンスヘッダー

活用シーン

  1. 01ブルートフォース攻撃からのAPI保護
  2. 02トラフィック急増とDoSリスクの管理
  3. 03サービスプランへの使用量クォータ適用
  4. 04APIリソースの公平な配分

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/aj-geddes/useful-ai-prompts --skill api-rate-limiting

インストール後、Claude Code で/api-rate-limitingを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
python-rate-limiting-flask.md
redis-based-rate-limiting.md
response-headers.md
sliding-window-algorithm.md
tiered-rate-limiting.md
token-bucket-algorithm.md
scripts/
validate-api.sh
templates/
api-scaffold.yaml

詳細

API レート制限

目次

概要

ユーザーごと、IP ごと、エンドポイントごとの戦略を使い、さまざまなレート制限アルゴリズムで API を不正利用から保護し、トラフィックを管理します。

使用する場面

  • ブルートフォース攻撃から API を保護する
  • トラフィックの急増を管理する
  • 段階的なサービスプランを導入する
  • DoS 攻撃を防ぐ
  • リソース割り当ての公平性を確保する
  • クォータと使用量の上限を適用する

クイックスタート

最小限の実行可能な例:

// Token Bucket Rate Limiter
class TokenBucket {
  constructor(capacity, refillRate) {
    this.capacity = capacity;
    this.tokens = capacity;
    this.refillRate = refillRate; // tokens per second
    this.lastRefillTime = Date.now();
  }

  refill() {
    const now = Date.now();
    const timePassed = (now - this.lastRefillTime) / 1000;
    const tokensToAdd = timePassed * this.refillRate;

    this.tokens = Math.min(this.capacity, this.tokens + tokensToAdd);
    this.lastRefillTime = now;
  }

  consume(tokens = 1) {
    this.refill();

    if (this.tokens >= tokens) {
      this.tokens -= tokens;
      return true;
    }
// ... (see reference guides for full implementation)

リファレンスガイド

詳細な実装は references/ ディレクトリにあります:

ガイド内容
トークンバケットアルゴリズムトークンバケットアルゴリズム
スライディングウィンドウアルゴリズムスライディングウィンドウアルゴリズム
Redis ベースのレート制限Redis ベースのレート制限
段階的なレート制限段階的なレート制限
Python のレート制限(Flask)Python のレート制限(Flask)
レスポンスヘッダーレスポンスヘッダー

ベストプラクティス

✅ 実施すること
  • レスポンスにレート制限ヘッダーを含める
  • 分散レート制限には Redis を使用する
  • ユーザープランごとに段階的な制限を実装する
  • 適切なウィンドウサイズと制限値を設定する
  • レート制限のメトリクスを監視する
  • 再試行方法を明確に案内する
  • API ドキュメントにレート制限を記載する
  • 高負荷時にテストする
❌ 避けること
  • 本番環境でインメモリストレージを使用する
  • 制限を厳しくしすぎる
  • Retry-After ヘッダーを含め忘れる
  • 分散環境でのシナリオを無視する
  • レート制限を公開する(セキュリティ上の理由)
  • 分散システムで単純なカウンターを使用する
  • 古いデータのクリーンアップを忘れる

コメント