📝 BLOG

API Rate Limiting: Throttling, Quota y Protección DDoS

El API rate limiting previene el abuso y la sobrecarga de su API. Esta guía cubre las estrategias de rate limiting, throttling, gestión de quota y protección DDoS.

Actualizado:

Preparado por: Gsetsoft

API Rate Limiting: Throttling, Quota y Protección DDoS

¿Qué es Rate Limiting?

Rate limiting es limitar el número de solicitudes que se pueden hacer en un período de tiempo específico (segundo, minuto, hora).

Propósitos: Prevenir el abuso de la API, asegurar el uso justo, proteger los recursos del servidor, reducir los ataques DDoS.

Cuando se excede el rate limit: Retorna el código de estado HTTP 429 (Too Many Requests). Especifica cuándo reintentar con el header Retry-After.

Rate limiting aumenta la disponibilidad y confiabilidad de la API. Asegura el cumplimiento de SLA (Service Level Agreement).

Algoritmos de Rate Limiting

Fixed Window: Contador mantenido en ventana de tiempo fija (ej. 100 solicitudes por minuto). Simple pero problema de boundary (spike en los límites de la ventana).

Sliding Window Log: Almacene el timestamp de cada solicitud. Cuente las solicitudes en los últimos N segundos. Más preciso pero usa más memoria.

Sliding Window Counter: Híbrido de fixed window y sliding window log. Menos memoria, resultado más preciso.

Token Bucket: Los tokens se producen a una tasa específica. Cada solicitud consume un token. Proporciona soporte de burst.

Leaky Bucket: Las solicitudes se agregan a la cola y se procesan a una tasa fija. Proporciona suavizado de tráfico.

Estrategias de Rate Limiting

Basado en IP: Límite basado en la dirección IP del solicitante. Simple pero los usuarios detrás de NAT (misma IP) tienen problemas.

Basado en usuario: Límite basado en el usuario autenticado. Más justo. Identifique al usuario con API key o JWT.

Basado en endpoint: Límite diferente para cada endpoint. /login (5/min) vs /users (100/min).

Tiered: Límites diferentes para diferentes tipos de usuarios. Free (100/min), Pro (1000/min), Enterprise (10000/min).

Global vs por-endpoint: Límite global (para toda la API) + límite por-endpoint. Use ambos juntos.

Implementación

Redis: Almacene los contadores de rate limit en Redis. Contador atómico con comandos INCR y EXPIRE. Ideal para rate limiting distribuido.

Middleware: Middleware de Express.js (express-rate-limit), Django (django-ratelimit), Spring Boot (Bucket4j).

API Gateway: Rate limiting con Kong, AWS API Gateway, Cloudflare. Gestión y monitoreo centralizados.

Response headers: Retorne información de límite con headers X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Client SDK: Las bibliotecas cliente leen la información de rate limit y realizan retry y backoff automáticamente.

Protección DDoS

Rate limiting por sí solo no proporciona protección DDoS. Los ataques DDoS vienen en volúmenes que exceden el rate limit.

Cloudflare: Protección DDoS, WAF (Web Application Firewall), gestión de bots. Tier gratuito disponible.

AWS Shield: Protección DDoS para servicios de AWS. Standard (gratuito) y Advanced (de pago).

Reputación de IP: Bloquee IPs con mala reputación. Use listas de reputación como Spamhaus, AbuseIPDB.

CAPTCHA: Verifique el tráfico sospechoso con CAPTCHA. reCAPTCHA v3 (invisible) o hCaptcha.

Geo-blocking: Bloquee el tráfico de países específicos (si es necesario).

Mejores Prácticas

Graceful degradation: Dé un mensaje de error claro al usuario cuando se exceda el rate limit. Especifique cuándo reintentar con el header Retry-After.

Monitoreo: Monitoree los hits de rate limit. El aumento anormal puede indicar un ataque o un bug.

Whitelist: Ponga en whitelist las IPs de confianza (servicios internos, APIs de socios).

Documentación: Declare claramente la política de rate limit en la documentación de la API. Información de límite, ventana y retry.

Pruebas: Pruebe el comportamiento del rate limit con load testing. Use k6, Artillery o JMeter.

Herramientas relacionadas

Tu elección de privacidad

Las cookies esenciales permiten seguridad y sesiones. También contamos visitas básicas; con permiso activamos análisis adicionales. Política de cookies