Skip to content

IPベースのレート制限ミドルウェアを追加#21

Merged
mohadayo merged 2 commits intomainfrom
feat/add-rate-limiting
Apr 16, 2026
Merged

IPベースのレート制限ミドルウェアを追加#21
mohadayo merged 2 commits intomainfrom
feat/add-rate-limiting

Conversation

@mohadayo
Copy link
Copy Markdown
Owner

変更概要

  • POSTリクエストに対するIPベースのレート制限ミドルウェアを新規実装
  • 環境変数 RATE_LIMIT で制限数を設定可能(デフォルト: 60回/分)
  • 標準的なレート制限レスポンスヘッダー付与(X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
  • クライアントIP取得: X-Forwarded-ForX-Real-IPRemoteAddr の優先順位
  • GETリクエストはレート制限をバイパス(読み取り操作への影響なし)
  • 制限超過時は 429 Too Many Requests を返却
  • 期限切れエントリの自動クリーンアップ(メモリリーク防止)
  • sync.Mutexによる並行安全な実装
  • 12のユニットテスト追加(並行アクセステスト含む)

Closes #20

動作確認手順

  1. go test -v -race ./... で全テストがパスすることを確認
  2. RATE_LIMIT=5 go run . で起動
  3. 同一IPからリスト作成を6回実行 → 6回目で429エラーを確認
  4. レスポンスヘッダーに X-RateLimit-* が含まれることを確認

- POSTリクエストに対するIPベースのレート制限を実装
- 環境変数RATE_LIMITで制限数を設定可能(デフォルト60回/分)
- X-RateLimit-Limit/Remaining/Resetヘッダーを付与
- X-Forwarded-For, X-Real-IP対応のクライアントIP取得
- 期限切れエントリの自動クリーンアップ
- 12のテストケースを追加(並行アクセステスト含む)
@mohadayo mohadayo merged commit 2082813 into main Apr 16, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

セキュリティ強化: IPベースのレート制限ミドルウェア追加

1 participant