Checklist de segurança antes de publicar seu app
20 verificações para fazer antes do lançamento, em seis grupos. Vale para apps feitos em Lovable, Bolt, Cursor ou escritos à mão. Cada item diz como checar.
Banco de dados
- Row Level Security em toda tabela. No Supabase, nenhuma tabela do schema public com RLS desligado. No Firebase, Security Rules que negam por padrão.
- Políticas testadas sem login. Chamar a API do banco com a chave pública e receber lista vazia em toda tabela privada.
- Políticas testadas entre usuários. Logado como usuário A, pedir um registro do usuário B e receber nada.
- Arquivos privados. Buckets privados por padrão; links de arquivo sensível com expiração.
Chaves e segredos
- Nenhum segredo no navegador. Buscar service_role, sk-, sk_live e secret no pacote publicado (DevTools, Sources).
- Nenhum segredo no histórico. Varredura do repositório inteiro, inclusive commits antigos, com Gitleaks.
- Chaves vazadas revogadas. Toda chave que já esteve publicada foi trocada no painel do serviço, não só apagada do código.
Login e sessão
- Limite de tentativas. Login, reset de senha, cupom e envio de e-mail com limite por usuário e por IP.
- Reset de senha seguro. Link que expira, uso único e mensagem igual para e-mail cadastrado ou não.
- Cadastro sob controle. Cadastro fechado se o app for só para convidados; confirmação de e-mail ligada.
- MFA para administradores. Toda conta com poder de administração usa segundo fator.
Permissões
- Permissão conferida no servidor. Ação de administrador repetida como usuário comum (copiando a requisição) precisa falhar.
- Sem acesso a dados de outro cliente. Trocar IDs em toda requisição e receber só o que é seu.
- Valores calculados no servidor. Preço, desconto e saldo nunca aceitos do navegador.
Publicação
- Sem source maps em produção. Nenhum arquivo .map acessível no site publicado.
- Cabeçalhos de segurança. Content-Security-Policy, Strict-Transport-Security, X-Content-Type-Options e X-Frame-Options.
- CORS restrito. A API aceita chamadas só das origens do seu app.
Operação
- Backup testado. Backup automático ligado e uma restauração feita de verdade.
- Logs e alerta. Falhas de login em massa e leituras anormais deixam registro e geram aviso.
- Dependências sem falha crítica. npm audit (ou similar) sem vulnerabilidade crítica em função que o app usa.
Quando chamar uma auditoria
O checklist pega o que é visível de fora. Ele não substitui um teste das regras do seu negócio por alguém que não escreveu o código. Vale chamar uma auditoria antes de abrir o app para clientes reais, quando ele guarda dados pessoais, de saúde ou de pagamento, ou quando um cliente ou investidor pede prova de segurança.
Para apps com Supabase ou Firebase, o Diagnóstico Express cobre os itens críticos deste checklist em até 5 dias úteis, com prova e correção recomendada.