diff options
| author | nsfisis <nsfisis@gmail.com> | 2025-12-30 22:08:47 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2025-12-30 22:08:47 +0900 |
| commit | c2eb7513834eeb5adfa53fff897f585de87e4821 (patch) | |
| tree | 9e914051ca67e2f9e1fa301119bdec398ec9e55f /src/server/middleware/rate-limiter.ts | |
| parent | b839cae49efd4b9d35c2868a4137101a4d71bd7f (diff) | |
| download | kioku-c2eb7513834eeb5adfa53fff897f585de87e4821.tar.gz kioku-c2eb7513834eeb5adfa53fff897f585de87e4821.tar.zst kioku-c2eb7513834eeb5adfa53fff897f585de87e4821.zip | |
feat(security): add rate limiting and CORS middleware
- Add rate limiting to login endpoint (5 requests/minute per IP)
- Configure CORS middleware with environment-based origin control
- Expose rate limit headers in CORS for client visibility
- Update hono to 4.11.3 for rate limiter peer dependency
🤖 Generated with [Claude Code](https://claude.ai/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Diffstat (limited to 'src/server/middleware/rate-limiter.ts')
| -rw-r--r-- | src/server/middleware/rate-limiter.ts | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/server/middleware/rate-limiter.ts b/src/server/middleware/rate-limiter.ts new file mode 100644 index 0000000..d2bf7d1 --- /dev/null +++ b/src/server/middleware/rate-limiter.ts @@ -0,0 +1,18 @@ +import { rateLimiter } from "hono-rate-limiter"; + +/** + * Rate limiter for login endpoint to prevent brute force attacks. + * Limits to 5 login attempts per minute per IP address. + */ +export const loginRateLimiter = rateLimiter({ + windowMs: 60 * 1000, // 1 minute + limit: 5, // 5 requests per window + keyGenerator: (c) => + c.req.header("x-forwarded-for") ?? c.req.header("x-real-ip") ?? "unknown", + message: { + error: { + message: "Too many login attempts, please try again later", + code: "RATE_LIMIT_EXCEEDED", + }, + }, +}); |
