Back to Wiki
Medium Risk
Wiki Entry

No Rate Limiting Detected

Your website doesn't appear to have rate limiting in place. Rate limiting restricts how many requests a user can make in a given time period.

Why This Matters

Without rate limiting, attackers can overwhelm your server with requests (DDoS attacks), brute-force login credentials, scrape your entire site, or abuse your API endpoints. This can lead to server crashes, degraded performance for legitimate users, and increased hosting costs.

How to Fix

Implement rate limiting middleware that tracks requests per IP address and returns 429 (Too Many Requests) status when limits are exceeded. Consider using services like Cloudflare or AWS WAF for protection.

Quick Reference

Common Rate Limit Strategies:

  • Fixed Window: Simple limit per time window (e.g., 100 requests per hour)
  • Sliding Window: More accurate, counts requests in a rolling time period
  • Token Bucket: Allows bursts while maintaining average rate
  • Leaky Bucket: Processes requests at a constant rate

Best Practices:

  • Use stricter limits for authentication endpoints (prevent brute force)
  • Return 429 status code with Retry-After header
  • Consider different limits for authenticated vs. anonymous users
  • Monitor and adjust limits based on actual usage patterns
  • Combine with CAPTCHA for additional protection on sensitive endpoints
  • Use distributed rate limiting for multi-server deployments (Redis, Upstash)

Standard Headers:

  • X-RateLimit-Limit - Maximum requests allowed
  • X-RateLimit-Remaining - Requests remaining
  • X-RateLimit-Reset - When limit resets (Unix timestamp)
  • Retry-After - Seconds to wait before retrying
AI Assistant Prompt

Copy this prompt to ask an AI for help implementing rate limiting:

Please fix the "Missing Rate Limiting" security vulnerability in this web application.

The issue is: Your application doesn't implement rate limiting, making it vulnerable to abuse like DDoS attacks, brute force attempts, and API abuse.

Make a plan and implement based on my project.