Rate Limiting controla a quantidade de requisicoes permitidas em um periodo de tempo, protegendo contra ataques de forca bruta e abuso de API.
Expression:
(http.request.uri.path eq "/api/auth/login" or http.request.uri.path eq "/login") and (http.request.method eq "POST")
Configuração:
Por que funciona:
Crie multiplas regras com penalidades crescentes:
Regra 1 - Warning (Log)
(http.request.uri.path eq "/login") and (http.request.method eq "POST")
Regra 2 - Challenge
(http.request.uri.path eq "/login") and (http.request.method eq "POST")
Regra 3 - Block
(http.request.uri.path eq "/login") and (http.request.method eq "POST")
Expression:
(http.request.uri.path starts_with "/api/")
Configuração:
Expression:
(http.request.uri.path eq "/api/expensive-operation")
Configuração:
Regra 1 - Anonimos (mais restritivo)
(http.request.uri.path starts_with "/api/") and not (http.request.headers["authorization"][0] ne "")
Regra 2 - Autenticados (mais permissivo)
(http.request.uri.path starts_with "/api/") and (http.request.headers["authorization"][0] ne "")
Expression:
(http.request.uri.path eq "/login") and (http.request.method eq "POST")
Configuração:
Logica: Nenhum humano digita credenciais 3 vezes em 10 segundos.
Expression:
(http.request.uri.path eq "/contact" or http.request.uri.path eq "/newsletter") and (http.request.method eq "POST")
Configuração:
O Cloudflare permite contar requisicoes por diferentes criterios:
| Caracteristica | Uso |
|---|---|
| IP | Padrao, bloqueia por endereco IP |
| IP + URI Path | Diferente limite por endpoint |
| Headers | Útil para APIs com API keys |
| Cookie | Tracking por sessao |
| Query String | Limite por parametro |
Você pode configurar uma resposta customizada quando o rate limit e atingido:
{
"error": "rate_limit_exceeded",
"message": "Muitas requisicoes. Tente novamente em alguns minutos.",
"retry_after": 60
}
Response Code: 429 (Too Many Requests)
Apos configurar rate limiting:
| Voltar para Cloudflare | Ver Snippets |