APIs são a parte mais exposta da sua aplicação: públicas por design, documentadas por conveniência e muitas vezes a última coisa a ser testada. Este checklist transforma o OWASP API Security Top 10 em controles concretos para rodar antes de cada release.
1. Autenticação
- Todo endpoint não público rejeita requests sem token (401).
- Tokens expirados ou adulterados são rejeitados; assinatura e expiração do JWT validadas no servidor.
- Nenhum endpoint aceita credenciais na URL ou query string.
OWASP API2: Autenticação quebrada.
2. Autorização (a mais importante)
- Em nível de objeto: cada request com um ID verifica que o usuário atual é dono do recurso. Trocar o ID para outro usuário deve retornar 403/404, não os dados dele.
- Em nível de função: rotas de admin rejeitam tokens de usuários normais.
- Em nível de propriedade: o usuário não pode definir campos protegidos (
role,isAdmin) por mass assignment.
OWASP API1 (BOLA), API3, API5, os riscos mais explorados.
// O controle BOLA que todo endpoint precisa
const order = await db.order.findFirst({
where: { id: params.id, userId: session.user.id },
})
if (!order) return new Response(null, { status: 404 })3. Rate limiting
- Login, signup, reset de senha e pagamentos são limitados.
- A paginação tem teto; o tamanho do body é limitado.
OWASP API4: Consumo de recursos sem restrição.
4. Validação de input
- Todo input é validado no servidor contra um schema.
- Acesso ao banco com queries parametrizadas ou ORM, nunca SQL montado com strings.
5. Segredos e configuração
- Nenhum segredo no cliente nem em
.envcommitados; rotacione qualquer chave exposta. - Se usar Supabase, RLS ativado em cada tabela (veja o guia de RLS).
6. Transporte e headers
- HTTPS e HSTS; CORS restrito a origens conhecidas.
- Headers de segurança: CSP, X-Content-Type-Options, X-Frame-Options.
Automatize o checklist
O Nurbak escaneia seu repositório do GitHub em busca desses problemas, retorna um relatório priorizado e pode abrir um PR com a correção. Em runtime, configure alertas sobre a taxa de erro por endpoint nos seus logs ou no seu APM para detectar um ataque em curso.
