0Pricing
Secure Coding & OWASP Top 10 for Backend · Lección

Limitación y control de frecuencia de API

Aprenda cómo la limitación de frecuencia protege las API frente al abuso, la fuerza bruta y la denegación de servicio, y cómo implementar estrategias de token bucket y ventana deslizante.

Limitación y control de frecuencia de API es una lección gratuita de Secure Coding & OWASP Top 10 for Backend en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Secure Coding & OWASP Top 10 for Backend, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Secure Coding & OWASP Top 10 for Backend incluye 4 lecciones en total.

Partes de esta lección aún no han sido traducidas y se muestran en inglés.

Why Rate Limiting?

Rate limiting caps how many requests a client can make in a time window. It protects APIs from brute-force attacks, scraping, accidental loops, and denial-of-service.

It is a key control listed under API security best practices.

Throttling vs Limiting

Rate limiting rejects requests over a hard cap; throttling slows them down (queuing or delaying) instead of rejecting outright. Both manage load and abuse, often used together.

What to Limit On

Choose a key to count requests against:

  • API key or user ID for authenticated traffic
  • IP address for anonymous traffic
  • Endpoint sensitivity (stricter limits on login)

Combining keys gives finer control and resists simple bypasses.

Fixed Window

The simplest approach counts requests in a fixed time window, resetting the counter each period. It is easy but allows bursts at window edges (twice the limit across a boundary).

import time

window = {}
LIMIT = 5
PERIOD = 60

def allow(key):
    now = int(time.time() // PERIOD)
    count = window.get((key, now), 0)
    if count >= LIMIT:
        return False
    window[(key, now)] = count + 1
    return True

Token Bucket

The token bucket refills tokens at a steady rate up to a capacity. Each request consumes a token; an empty bucket means the request is rejected. It allows controlled bursts while enforcing an average rate.

import time

class TokenBucket:
    def __init__(self, rate, capacity):
        self.rate = rate
        self.capacity = capacity
        self.tokens = capacity
        self.last = time.time()
    def allow(self):
        now = time.time()
        self.tokens = min(self.capacity, self.tokens + (now - self.last) * self.rate)
        self.last = now
        if self.tokens >= 1:
            self.tokens -= 1
            return True
        return False

Sliding Window

The sliding window tracks timestamps of recent requests and counts only those within the last N seconds. It avoids the burst problem of fixed windows at the cost of more bookkeeping.

Distributed Rate Limiting

With multiple servers, counters must be shared. A central store like Redis holds the counters so limits apply across the whole cluster, not per instance. Use atomic operations to avoid race conditions.

Communicating Limits

Tell clients about their limits with response headers so well-behaved clients can back off.

headers = {
    'X-RateLimit-Limit': '100',
    'X-RateLimit-Remaining': '42',
    'X-RateLimit-Reset': '1717000000',
    'Retry-After': '30',
}
for k, v in headers.items():
    print(k + ': ' + v)

Status Codes

Return 429 Too Many Requests when a client exceeds the limit, ideally with a Retry-After header. This is the standard signal clients and SDKs expect.

Protecting Sensitive Endpoints

Apply stricter limits to high-risk endpoints like login, password reset, and OTP verification. Tight limits here directly blunt brute-force and credential-stuffing attacks.

  • Login: a few attempts per minute
  • Password reset: a few per hour
  • General reads: generous limits

Avoiding Pitfalls

Watch for bypasses: rotating IPs, missing limits on some routes, and limits that reset on server restart. Place rate limiting at the gateway or middleware layer so every route is covered consistently.

Quick Check

Test your understanding of rate limiting.

Recap

You learned why APIs need rate limiting, how to choose a limiting key, and the trade-offs of fixed-window, token-bucket, and sliding-window strategies. You also saw distributed limiting with Redis, the 429 response, and stricter limits for sensitive endpoints.

Preguntas frecuentes

¿La lección «Limitación y control de frecuencia de API» es gratis?

Sí — el texto completo de «Limitación y control de frecuencia de API» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Secure Coding & OWASP Top 10 for Backend, actualiza a CoddyKit PRO. El curso de Secure Coding & OWASP Top 10 for Backend incluye 4 lecciones en total.

¿Qué aprenderé en «Limitación y control de frecuencia de API»?

Aprenda cómo la limitación de frecuencia protege las API frente al abuso, la fuerza bruta y la denegación de servicio, y cómo implementar estrategias de token bucket y ventana deslizante. Practicas Secure Coding & OWASP Top 10 for Backend con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Secure Coding & OWASP Top 10 for Backend?

No se requiere experiencia previa. Secure Coding & OWASP Top 10 for Backend en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Limitación y control de frecuencia de API»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Secure Coding & OWASP Top 10 for Backend?

Sí. Cada lección de Secure Coding & OWASP Top 10 for Backend incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Diseño de API RESTful seguras
  2. Seguridad de API GraphQL
  3. Prevención de ataques SSRF
  4. Limitación y control de frecuencia de API
← Volver a Secure Coding & OWASP Top 10 for Backend