Boas práticas de autenticação: proteção contra hijacking, brute force e uso de refresh tokens
1. Proteção contra Token Hijacking
Token hijacking ocorre quando um atacante intercepta ou rouba um token de autenticação, como um JWT, e o reutiliza para acessar recursos protegidos como se fosse o usuário legítimo.
Para se proteger contra esse tipo de ataque:
- Use HTTPS sempre, evitando que os tokens trafeguem em texto claro.
- Utilize tokens de curta duração (short-lived tokens).
- Implemente refresh tokens com controle de sessão e armazenamento seguro (ex: cookies HttpOnly).
- Implemente rotação de refresh tokens, invalidando o anterior a cada renovação.
- Associe tokens ao user-agent ou ao IP para detectar usos suspeitos.
2. Proteção contra Brute Force
O ataque de força bruta consiste em tentar várias combinações de senhas ou tokens para acessar um sistema.
Medidas de proteção eficazes incluem:
- Rate limiting por IP ou por usuário.
- Bloqueio temporário após múltiplas tentativas falhas.
- Uso de CAPTCHA para impedir ataques automatizados.
- Exigir senhas fortes e armazená-las com algoritmos seguros como
bcryptouargon2. - Habilitar autenticação em dois fatores (MFA).
3. Uso seguro de Refresh Tokens
Refresh tokens são usados para obter novos access tokens sem exigir que o usuário refaça o login frequentemente.
Boas práticas incluem:
- Manter o access token com tempo curto de expiração (5–15 minutos).
- Armazenar o refresh token com HttpOnly, Secure e SameSite=”strict”.
- Rejeitar o token anterior se um novo for emitido (rotação).
- Revogar tokens em caso de logout ou comportamento suspeito.
- Implementar um sistema de token blacklist ou de token store com expiração controlada.
- Separar tokens por escopos diferentes (leitura, escrita, etc.).