📝 BLOG

API Rate Limiting: Throttling, Quota e Proteção DDoS

API rate limiting previne abuso e sobrecarga da sua API. Este guia cobre as estratégias de rate limiting, throttling, gestão de quota e proteção DDoS.

Atualizado em:

Preparado por: Gsetsoft

API Rate Limiting: Throttling, Quota e Proteção DDoS

O que é Rate Limiting?

Rate limiting é limitar o número de solicitações que podem ser feitas em um período de tempo específico (segundo, minuto, hora).

Propósitos: Prevenir abuso da API, garantir uso justo, proteger recursos do servidor, reduzir ataques DDoS.

Quando o rate limit é excedido: Retorna o código de status HTTP 429 (Too Many Requests). Especifica quando tentar novamente com o header Retry-After.

Rate limiting aumenta a disponibilidade e confiabilidade da API. Garante a conformidade com SLA (Service Level Agreement).

Algoritmos de Rate Limiting

Fixed Window: Contador mantido em janela de tempo fixa (ex. 100 solicitações por minuto). Simples mas problema de boundary (spike nos limites da janela).

Sliding Window Log: Armazene o timestamp de cada solicitação. Conte as solicitações nos últimos N segundos. Mais preciso mas usa mais memória.

Sliding Window Counter: Híbrido de fixed window e sliding window log. Menos memória, resultado mais preciso.

Token Bucket: Tokens são produzidos a uma taxa específica. Cada solicitação consome um token. Fornece suporte de burst.

Leaky Bucket: Solicitações são adicionadas à fila e processadas a uma taxa fixa. Fornece suavização de tráfego.

Estratégias de Rate Limiting

Baseado em IP: Limite baseado no endereço IP do solicitante. Simples mas usuários atrás de NAT (mesmo IP) têm problemas.

Baseado em usuário: Limite baseado no usuário autenticado. Mais justo. Identifique o usuário com API key ou JWT.

Baseado em endpoint: Limite diferente para cada endpoint. /login (5/min) vs /users (100/min).

Tiered: Limites diferentes para diferentes tipos de usuários. Free (100/min), Pro (1000/min), Enterprise (10000/min).

Global vs por-endpoint: Limite global (para toda a API) + limite por-endpoint. Use ambos juntos.

Implementação

Redis: Armazene os contadores de rate limit no Redis. Contador atômico com comandos INCR e EXPIRE. Ideal para rate limiting distribuído.

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

API Gateway: Rate limiting com Kong, AWS API Gateway, Cloudflare. Gestão e monitoramento centralizados.

Response headers: Retorne informações de limite com headers X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Client SDK: Bibliotecas cliente leem as informações de rate limit e realizam retry e backoff automaticamente.

Proteção DDoS

Rate limiting sozinho não fornece proteção DDoS. Ataques DDoS vêm em volumes que excedem o rate limit.

Cloudflare: Proteção DDoS, WAF (Web Application Firewall), gestão de bots. Tier gratuito disponível.

AWS Shield: Proteção DDoS para serviços da AWS. Standard (gratuito) e Advanced (pago).

Reputação de IP: Bloqueie IPs com má reputação. Use listas de reputação como Spamhaus, AbuseIPDB.

CAPTCHA: Verifique o tráfego suspeito com CAPTCHA. reCAPTCHA v3 (invisível) ou hCaptcha.

Geo-blocking: Bloqueie o tráfego de países específicos (se necessário).

Melhores Práticas

Graceful degradation: Dê uma mensagem de erro clara ao usuário quando o rate limit for excedido. Especifique quando tentar novamente com o header Retry-After.

Monitoramento: Monitore os hits de rate limit. Aumento anormal pode indicar ataque ou bug.

Whitelist: Coloque na whitelist os IPs confiáveis (serviços internos, APIs de parceiros).

Documentação: Declare claramente a política de rate limit na documentação da API. Informações de limite, janela e retry.

Testes: Teste o comportamento do rate limit com load testing. Use k6, Artillery ou JMeter.

Ferramentas relacionadas

Sua escolha de privacidade

Cookies essenciais permitem segurança e sessões. Contamos visitas básicas; com sua permissão ativamos análises adicionais. Política de Cookies