implementing-api-abuse-detection-with-rate-limiting
Ensina seu agente de IA a construir APIs e sistemas de back-end.
O que ela faz
Esta habilidade ajuda a proteger seus aplicativos de serem sobrecarregados com muitas solicitações. Ela limita quantas vezes um usuário pode acessar seu aplicativo em um determinado período, usando diferentes métodos para garantir que o serviço permaneça disponível para todos.
Quando usar
- ✓Quando você quer evitar que seu aplicativo seja atacado por excesso de requisições (DDoS).
- ✓Quando você precisa impedir tentativas de login repetidas e rápidas (brute force).
- ✓Quando você quer limitar o número de vezes que alguém pode acessar seus dados (scraping).
Exemplo do que pedir para a IA
“Proteja meu aplicativo contra ataques de força bruta.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
A habilidade usa técnicas como 'token bucket' e 'janela deslizante' para contar as requisições. Se muitas requisições chegarem rapidamente, ela pode bloquear ou atrasar algumas para proteger o sistema.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill implementing-api-abuse-detection-with-rate-limitingOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/implementing-api-abuse-detection-with-rate-limiting/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Implementando Detecção de Abuso de API com Limitação de Taxa
Visão Geral
A limitação de taxa de API é um controle de segurança crítico que restringe o número de requisições que um cliente pode fazer em um período de tempo definido. Ela defende contra ataques de negação de serviço (DDoS), tentativas de login por força bruta, credential stuffing, raspagem de API e ataques de exaustão de recursos. Implementações modernas usam algoritmos como token bucket, janela deslizante e contadores de janela fixa, frequentemente apoiados por armazenamentos distribuídos como Redis. A limitação de taxa adaptativa aperta dinamicamente os limites durante ataques detectados e relaxa durante a operação normal, alcançando uma redução de 94% nas tentativas de DDoS bem-sucedidas em comparação com abordagens estáticas baseadas em IP.
Quando Usar
- Ao implantar ou configurar a detecção de abuso de API com capacidades de limitação de taxa em seu ambiente
- Ao estabelecer controles de segurança alinhados aos requisitos de conformidade
- Ao construir ou melhorar a arquitetura de segurança para este domínio
- Ao conduzir avaliações de segurança que exigem esta implementação
Pré-requisitos
- Gateway de API (Kong, AWS API Gateway, Apigee) ou proxy reverso (NGINX, Envoy)
- Redis ou Memcached para contadores de limite de taxa distribuídos
- Infraestrutura de monitoramento e alerta (Prometheus, Grafana ou SIEM)
- Compreensão dos padrões de tráfego de API normais e linhas de base
- Python 3.8+ ou Node.js para implementação personalizada
Algoritmos de Limitação de Taxa
Algoritmo Token Bucket
O token bucket atribui a cada cliente um "balde" com uma capacidade fixa de tokens. Os tokens são reabastecidos a uma taxa constante. Cada requisição consome um token. Quando o balde está vazio, as requisições são rejeitadas. Isso permite rajadas controladas enquanto mantém limites médios.
"""Limitador de Taxa Token Bucket com Backend Redis
Implementa um algoritmo distribuído de token bucket para limitação de taxa de API
com permissão para rajadas e reabastecimento automático.
"""
import time
import redis
import json
from typing import Tuple
class TokenBucketRateLimiter:
def __init__(self, redis_client: redis.Redis,
max_tokens: int = 100,
refill_rate: float = 10.0,
key_prefix: str = "ratelimit:tb"):
self.redis = redis_client
self.max_tokens = max_tokens
self.refill_rate = refill_rate # tokens por segundo
self.key_prefix = key_prefix
def _get_key(self, client_id: str) -> str:
return f"{self.key_prefix}:{client_id}"
def allow_request(self, client_id: str, tokens_required: int = 1) -> Tuple[bool, dict]:
"""Verifica se uma requisição deve ser permitida sob o limite de taxa.
Retorna (permitido, info) onde info contém tokens restantes
e segundos de retry-after.
"""
key = self._get_key(client_id)
now = time.time()
# Operação atômica de token bucket usando script Lua
lua_script = """
local key = KEYS[1]
local max_tokens = tonumber(ARGV[1])
local refill_rate = tonumber(ARGV[2])
local now = tonumber(ARGV[3])
local requested = tonumber(ARGV[4])
local bucket = redis.call('HMGET', key, 'tokens', 'last_refill')
local tokens = tonumber(bucket[1])
local last_refill = tonumber(bucket[2])
-- Inicializa o balde se ele não existir
if tokens == nil then
tokens = max_tokens
last_refill = now
end
-- Calcula tokens reabastecidos
local elapsed = now - last_refill
local refilled = elapsed * refill_rate
tokens = math.min(max_tokens, tokens + refilled)
-- Verifica se há tokens suficientes disponíveis
local allowed = 0
if tokens >= requested then
tokens = tokens - requested
allowed = 1
end
-- Atualiza o estado do balde
redis.call('HMSET', key, 'tokens', tokens, 'last_refill', now)
redis.call('EXPIRE', key, 3600) -- TTL para limpeza
-- Calcula retry-after se negado
local retry_after = 0
if allowed == 0 then
retry_after = math.ceil((requested - tokens) / refill_rate)
end
return {allowed, math.floor(tokens), retry_after}
"""
result = self.redis.eval(
lua_script, 1, key,
self.max_tokens, self.refill_rate, now, tokens_required
)
allowed = bool(result[0])
remaining = int(result[1])
retry_after = int(result[2])
return allowed, {
"remaining": remaining,
Perguntas frequentes
O que é 'rate limiting'?
É como um porteiro para seu aplicativo, que controla quantas pessoas (requisições) podem entrar em um certo tempo para evitar superlotação.
O que são 'ataques DDoS'?
São ataques que tentam derrubar um serviço online enviando um volume massivo de requisições, como uma multidão tentando entrar em uma loja ao mesmo tempo.
Por que usar Redis?
Redis é um sistema rápido que ajuda a contar as requisições de muitos usuários ao mesmo tempo, de forma eficiente.
Detalhes
Descrição original do autor
Implements API abuse detection using token bucket, sliding window, and fixed window rate-limiting algorithms backed by Redis, including adaptive limits that tighten during detected attacks and relax during normal traffic. Use when defending APIs against DDoS, brute force login attempts, credential stuffing, or scraping abuse and you need to design or tune rate-limiting logic.
Popularidade
- Estrelas no GitHub
- 35 mil
- Posição no ranking
- #5822
- Licença
- Apache-2.0
- Atualizada em
- 31/08/2026
Comentários
- …
Mais skills deste repositório
abusing-dpapi-for-credential-access
Dá ao seu agente de IA instruções prontas para uma tarefa específica, para ele fazer melhor e mais rápido.
mukul975/Anthropic-Cybersecurity-Skills
abusing-shadow-credentials-for-privesc
Ensina seu agente de IA a escrever textos claros e bem estruturados.
mukul975/Anthropic-Cybersecurity-Skills
achieving-cmmc-level-2-compliance
Ajuda seu agente a preparar um ambiente para conformidade com CMMC Nível 2. Ele implementa requisitos de segurança e gerencia a documentação necessária.
mukul975/Anthropic-Cybersecurity-Skills
acquiring-disk-image-with-dd-and-dcfldd
Ajuda seu agente a criar cópias exatas de discos rígidos. Isso é útil para garantir que nenhuma informação seja perdida ou alterada durante investigações.
mukul975/Anthropic-Cybersecurity-Skills
Skills parecidas
api-connector-builder
Faz seu agente construir novas conexões com APIs seguindo o padrão já existente. Use quando precisar adicionar mais uma integração sem criar um novo jeito de fazer.
affaan-m/ECC
api-design
Ajuda seu agente a projetar APIs REST seguindo as melhores práticas. É útil para definir como as APIs se comunicam, como os erros são mostrados e como organizar os dados.
affaan-m/ECC
backend-patterns
Ajuda seu agente com padrões de arquitetura do lado do servidor e otimização de banco de dados. É útil para construir ou revisar o código que roda no servidor.
affaan-m/ECC