Autenticação de API é a primeira linha de defesa contra acessos não autorizados. Quando mal implementada, ela expõe dados confidenciais e permite que invasores assumam o controle de recursos inteiros. Os erros abaixo são os mais comuns em projetos reais, e corrigi-los exige atenção a detalhes que muitas vezes passam despercebidos.
A boa notícia: a maioria desses problemas tem solução direta, com mudanças de configuração ou adoção de padrões consolidados. Veja os 7 erros que mais comprometem a segurança da sua API e o que fazer em cada caso.
1. Usar autenticação básica sem proteção adicional
Autenticação básica (Basic Auth) envia usuário e senha em texto puro, apenas codificados em Base64. Sem HTTPS, qualquer interceptação na rede revela as credenciais. Mesmo com HTTPS, o servidor precisa validar a senha a cada requisição, o que aumenta a carga e o risco de vazamento em logs.
Substitua por tokens como OAuth 2.0 ou JWT, que têm expiração e escopo limitado. Se ainda precisar de Basic Auth, restrinja a ambientes internos e exija HTTPS obrigatório.
2. Não definir expiração para tokens
Tokens sem data de validade viram chaves mestras permanentes. Um token vazado em um log, repositório ou dispositivo perdido continua funcionando indefinidamente. O invasor não precisa se apressar: ele tem todo o tempo do mundo.
Defina expiração curta (15 a 60 minutos) para tokens de acesso e use refresh tokens para renovação. Isso limita a janela de exploração e força reautenticação periódica.
3. Ignorar rate limiting e proteção contra brute force
APIs sem limite de requisições permitem que um atacante tente milhares de senhas ou tokens em segundos. O rate limiting não apenas protege a autenticação, mas também evita sobrecarga do servidor.
Configure limites por IP, por usuário e por rota. Por exemplo, permita no máximo 5 tentativas de login por minuto por IP. Isso já inviabiliza ataques de força bruta na prática.
4. Armazenar segredos e chaves no código-fonte
Chaves de API, senhas de banco e segredos JWT dentro do código ou em arquivos versionados são o erro clássico. Qualquer pessoa com acesso ao repositório, mesmo interno, obtém credenciais válidas. Vazamentos em repositórios públicos já expuseram milhões de chaves.
Use variáveis de ambiente ou cofres de segredos (como AWS Secrets Manager ou HashiCorp Vault). Rotacione chaves regularmente e revogue imediatamente qualquer segredo comprometido.
5. Não validar entrada e autorização por escopo
Erro comum é autenticar o usuário, mas não verificar se ele tem permissão para aquela ação específica. Isso gera vulnerabilidades como IDOR (Insecure Direct Object References), onde um usuário acessa recursos de outro apenas alterando um ID na URL.
Implemente controle de acesso por escopo (ex.: read:orders, write:orders) e valide a autorização em cada endpoint, não apenas no login. Nunca confie em IDs enviados pelo cliente sem verificação no servidor.
6. Negligenciar HTTPS e criptografia em trânsito
Dados trafegando sem HTTPS podem ser lidos ou alterados por intermediários. Isso afeta não só a autenticação, mas toda a comunicação da API. Em redes públicas, o risco é ainda maior.
Exija HTTPS em todas as rotas, inclusive as de autenticação. Use HSTS para forçar conexão segura no navegador e evite redirecionamentos HTTP para HTTPS que possam ser interceptados.
7. Não monitorar nem auditar tentativas de acesso
Sem logs de autenticação, você não percebe padrões suspeitos até que o dano esteja feito. Tentativas repetidas de login, acessos fora do horário ou de IPs estranhos passam despercebidos.
Registre eventos de autenticação (sucesso, falha, expiração) e monitore com alertas. Um pico de falhas seguido de sucesso pode indicar um ataque de força bruta bem-sucedido.
Como escolher a abordagem certa para sua API
Não existe solução única, mas a prioridade é clara: comece pelos erros que expõem credenciais (itens 1, 2 e 4) e depois avance para os que limitam o dano (itens 3, 5, 6 e 7). Para APIs públicas, adote OAuth 2.0 com escopos e expiração. Para APIs internas, tokens com rotação periódica já elevam bastante o padrão.
Perguntas frequentes
O que é autenticação de API?
Autenticação de API é o processo de verificar a identidade de quem faz uma requisição. Ela garante que apenas usuários ou sistemas autorizados acessem os recursos. Os métodos mais comuns são chaves de API, OAuth 2.0 e JWT.
Qual a diferença entre autenticação e autorização?
Autenticação confirma quem você é; autorização define o que você pode fazer. Uma API pode autenticar o usuário corretamente e ainda assim falhar ao não verificar permissões específicas, o que gera vulnerabilidades de acesso indevido.
Como proteger uma API sem usar OAuth?
Para APIs simples, use tokens com expiração curta, HTTPS obrigatório, rate limiting e armazenamento seguro de segredos. Essas medidas já eliminam os erros mais críticos listados acima.
O que é um token JWT e por que ele é usado?
JWT (JSON Web Token) é um formato de token que carrega informações do usuário e permissões. Ele é assinado pelo servidor, evitando adulteração. Porém, precisa de expiração e validação adequadas para não virar uma porta aberta.
Como saber se minha API está vulnerável?
Revise se você usa HTTPS, se os tokens expiram, se há rate limiting e se segredos estão fora do código. Ferramentas de análise estática e testes de penetração ajudam a identificar falhas concretas.
O que fazer se uma chave de API vazar?
Revogue a chave imediatamente e emita uma nova. Investigue os logs para ver se houve uso indevido. Troque também qualquer segredo relacionado e avalie a adoção de rotação automática de chaves.