El Rate Limiting es una técnica de seguridad que controla el número de solicitudes (frecuencia) que un cliente puede hacer a una API o servicio en un período de tiempo determinado. Por ejemplo, se puede limitar a 100 requests por minuto por usuario para prevenir sobrecarga del servidor y garantizar un servicio equitativo para todos los usuarios. La limitación es a nivel de aplicación (o servicio a usar) y no a nivel de servidor. Es un escenario de seguridad.
Componentes
- Cantidad máxima de peticiones.
- Periodo de tiempo en que se aplican las peticiones.
- A quién le aplico la restricción
Casos de Uso del Rate Limiting
- Prevención de ataques DDoS (Denegación de Servicio Distribuido): son un tipo de ataque informático que busca hacer inaccesible un servicio mediante la sobrecarga del servidor con un gran volumen de solicitudes simultáneas desde múltiples fuentes
- Gestión de recursos: Evita que un solo usuario consuma demasiados recursos del servidor, asegurando un servicio justo para todos.
- Protección contra bots: Previene el scraping masivo y el uso automatizado no autorizado.
- Cumplimiento de SLAs: Ayuda a mantener los acuerdos de nivel de servicio garantizando una distribución equitativa de recursos.
- Ataques de fuera bruta: es una técnica que consiste en intentar acceder a un sistema o descifrar contraseñas probando sistemáticamente todas las combinaciones posibles hasta encontrar la correcta. En el contexto del rate limiting, estos ataques se previenen limitando el número de intentos de autenticación por usuario en un período específico.
- Ataques DoS (Denegación de Servicio): es un tipo de ataque informático que busca hacer que un servicio o recurso sea inaccesible para los usuarios legítimos, típicamente sobrecargando el servidor con un volumen excesivo de solicitudes.
- Apropiación Web o Web scraping: apropiación no autorizada del contenido de un sitio web, una práctica que implica la extracción automatizada y masiva de datos de páginas web sin permiso.
RS 429 many requests
HTTP 429 es un código de estado de respuesta que indica que el cliente ha excedido el número permitido de solicitudes en un período de tiempo determinado, también conocido como "Too Many Requests" (Demasiadas solicitudes). Este código es comúnmente utilizado en implementaciones de Rate Limiting.
Biblioteca SlowAPI
- Primero instalar SlowApi
pip install slowapi
- En el archivo raíz (main o request handler) agregamos las configuraciones de SlowApi. Esto es a nivel de endpoints base.