Token Leakage
O vazamento de tokens (Token Leakage) ocorre quando segredos da aplicação, como JWTs, chaves de API ou tokens de sessão, são expostos involuntariamente a terceiros.
Vetores Comuns de Vazamento
- URLs (Cabeçalho Referrer): Enviar um token via parâmetro de busca (query string) faz com que ele vaze se o usuário clicar em um link externo ou se a página carregar recursos de terceiros.
- Logs de Console: Esquecer
console.log(token)em produção permite que qualquer pessoa com acesso físico ao computador ou via scripts maliciosos leia o token. - Logs de Servidor e Proxies: Tokens na URL ficam registrados em logs de servidores Nginx, Apache e proxies de rede.
- Erros de Aplicação: Exibir o payload completo de uma requisição que falhou (contendo o cabeçalho Authorization) em uma interface de erro.
Como fazer vs Como não fazer
✅ Como fazer
- Envie tokens de autenticação exclusivamente via cabeçalhos HTTP (ex:
Authorization: Bearer <token>) ou Cookies seguros. - Remova todos os logs de console da aplicação antes de realizar o deploy para produção (utilize plugins de build para automatizar isso).
- Configure a Referrer-Policy correta para evitar o envio de URLs completas para outros domínios.
- Utilize variáveis de ambiente para gerenciar chaves de API durante o desenvolvimento e build.
❌ Como não fazer
- Jamais coloque tokens ou senhas na URL (query params).
- Não faça commit de arquivos que contenham segredos (como
.env) no controle de versão (Git). - Não exiba mensagens de erro técnicas detalhadas para o usuário final que possam conter payloads de rede ou segredos da aplicação.