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 app publicado em busca desses problemas e retorna um relatório priorizado; o Nurbak Watch monitora as taxas de erro por endpoint e alerta em segundos diante de um ataque em curso.

