This PR implements a comprehensive rate limiting system to protect critical operations, ensure fair usage, and maintain system stability. The implementation addresses the missing rate limiting mechanisms identified in issue #357.
- Enhanced RateLimitGuard with decorator support and monitoring integration
- User Tier-Based Rate Limits supporting FREE, BASIC, PREMIUM, and ENTERPRISE tiers
- Comprehensive Monitoring Service with violation logging and pattern detection
- Rate Limit Decorators for easy endpoint-specific configuration
- Authentication endpoints (
/auth/*) - 5 requests per 15 minutes (AUTH preset) - Payment endpoints (
/payments/*) - 10 requests per minute for expensive operations (EXPENSIVE preset) - Public endpoints - 120 requests per minute (PUBLIC preset)
- API endpoints - 60 requests per minute (API preset)
- Violation logging with detailed metadata (user, IP, endpoint, tier)
- Pattern detection for suspicious activities:
- High-frequency IP detection (>50 violations in 5 minutes)
- Distributed attack detection (>100 unique IPs with >500 violations)
- Endpoint abuse detection (>100 violations per endpoint)
- Integration ready for Elasticsearch, Sentry, and custom analytics
- Statistics dashboard with violation metrics and trends
- Comprehensive rate limit policies document (
docs/rate-limit-policies.md) - Configuration guidelines and best practices
- Security considerations and compliance information
- Troubleshooting guide for common issues
| Tier | Requests/Minute | Strategy | Use Case |
|---|---|---|---|
| FREE | 60 | IP-based | Public access |
| BASIC | 150 | IP + User | Standard users |
| PREMIUM | 500 | User-based | Premium subscribers |
| ENTERPRISE | 2000 | User-based | Enterprise customers |
- Sliding window algorithm for fair request distribution
- Redis and in-memory stores for scalability
- Fail-open strategy for high availability
- Rate limit headers (
X-RateLimit-*) for client-side handling - Automatic tier detection based on user subscriptions and roles
- Decorator-based configuration for easy endpoint protection
src/rate-limit/services/user-tier-rate-limit.service.ts- User tier managementsrc/rate-limit/services/rate-limit-monitoring.service.ts- Violation monitoringdocs/rate-limit-policies.md- Comprehensive documentation
src/rate-limit/guards/rate-limit.guard.ts- Enhanced with monitoring and tier supportsrc/rate-limit/rate-limit.module.ts- Updated module configurationsrc/auth/auth.controller.ts- Added AUTH rate limiting to critical endpointssrc/payments/controllers/payment.controller.ts- Added EXPENSIVE rate limiting
The implementation includes:
- Fail-safe mechanisms to prevent service disruption
- Comprehensive logging for debugging and monitoring
- Pattern detection for security monitoring
- Rate limit headers for client-side integration
- IP-based protection for anonymous users
- User-based limits for authenticated users
- Tier-based adjustments for subscription levels
- Monitoring integration for threat detection
- Fail-open strategy to maintain availability
None. This is a non-breaking addition that enhances security without affecting existing functionality.
Environment variables available:
RATE_LIMIT_REDIS_URL=redis://localhost:6379
RATE_LIMIT_DEFAULT_LIMIT=60
RATE_LIMIT_DEFAULT_WINDOW_MS=60000
RATE_LIMIT_ENABLE_MONITORING=true✅ Implement rate limiting mechanisms - Complete with decorator-based system
✅ Add user-specific rate limits - Four-tier system implemented
✅ Monitor rate limit violations - Full monitoring with pattern detection
✅ Document rate limit policies - Comprehensive documentation created
This implementation significantly improves the security posture of the application by:
- Preventing brute force attacks on authentication endpoints
- Protecting financial operations from abuse
- Ensuring fair resource allocation across users
- Providing visibility into usage patterns and potential threats
- Supporting scalable growth with tier-based limits
Fixes #357: No Rate Limiting