/ TL;DR

20 itens acionáveis de segurança para lançar MVP no Brasil pronto para LGPD, com foco no essencial que evita multa da ANPD e vazamento inicial.

MVP é sobre validar hipótese. Segurança em MVP é sobre não estragar o negócio antes dele nascer.

O erro que a gente vê toda semana: fundador solo com SaaS de gestão financeira sobe produto em 3 semanas, ganha 50 clientes pagantes, vaza CPF e conta bancária de todos eles no dia 90. Notificação obrigatória à ANPD, cliente sumindo, imprensa. Empresa morta antes da série A.

Não precisa ser assim. Este checklist é o mínimo viável para um MVP brasileiro subir em produção sem estar aberto de escancarado. 20 itens, executáveis em 2-5 dias por um dev fullstack.

Se você quer o detalhamento completo de LGPD, veja o checklist LGPD de 15 pontos para software houses.

Autenticação e sessão

1. Hash de senha com bcrypt/argon2, custo 12+. Nada de SHA-256, nada de MD5, nada de "salt caseiro". bcrypt.hash(password, 12) ou argon2id com parâmetros default.

2. MFA opcional (obrigatório para admin). TOTP via authenticator app. Não use SMS — não é seguro contra SIM swap e no BR não é confiável de operadora.

3. Rate limit em login (5 tentativas/15min por IP e por conta). Bruteforce trivial se não tiver. Cloudflare Turnstile ou hCaptcha resolve.

4. Sessão com cookie httpOnly, Secure, SameSite=Lax. JWT em localStorage é armadilha comum de vibe coding, veja 12 vibe coding vulnerabilities.

Autorização

5. Toda rota checa req.user. Todo endpoint que devolve dado precisa validar que o usuário atual tem direito àquele recurso. Não confie no ID vindo do cliente.

6. IDOR test manual em cada endpoint com :id. Antes do deploy: logue com dois usuários, tente acessar recurso de um estando logado como outro. Se retorna 200, você tem IDOR.

7. Admin isolado por domínio ou path com allowlist de IP. Nada de /admin acessível pela internet inteira. Use subdomínio separado atrás de Cloudflare Access ou similar.

Dados e LGPD

8. Mapeamento de dado pessoal. Planilha simples: quais tabelas têm PII (CPF, email, telefone, endereço)? Quem acessa? Base legal (art. 7 da LGPD)?

9. Consentimento explícito no cadastro. Checkbox não pré-marcado, texto claro. Log de aceite com timestamp, IP e versão dos termos aceitos.

10. Endpoint de eliminação de dados. LGPD art. 18: titular pode pedir exclusão. Se você não tem endpoint, tem risco. Não precisa ser interface bonita — pode ser email + processo manual, mas precisa existir.

11. Anonimização em logs. Não logue senha, token, CPF completo, número de cartão. Máscara: CPF: 123.*.-45.

12. Retenção de dado definida. Quanto tempo você guarda log? Backup? Se não sabe, sua resposta é "para sempre" — e isso vira problema em incidente. Defina 90 dias para log, 1 ano para dados transacionais, delete o resto.

Infraestrutura

13. HTTPS obrigatório, HSTS habilitado. Redirect 301 de HTTP para HTTPS. Header Strict-Transport-Security: max-age=31536000; includeSubDomains. Certificado Let's Encrypt renova sozinho.

14. Secrets fora do repositório. .env no .gitignore. Todo secret em cofre (AWS Secrets Manager, Doppler, 1Password Secrets). Se você acha que já commitou secret alguma vez, rode trufflehog no repositório e rotacione tudo que aparecer.

15. Backup diário com teste de restore mensal. Backup que nunca foi restaurado é backup ficcional. Uma vez por mês, restaure em ambiente separado e confirme que abre.

16. Ambiente separado por variável, não por deploy manual. Staging e produção com banco separado, credencial separada, domínio separado. Nada de "vou testar em prod só essa vez".

Aplicação

17. Headers de segurança básicos. Adicione em toda resposta:

Content-Security-Policy: default-src 'self'
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: geolocation=(), microphone=()

Testar em securityheaders.com. Nota mínima aceitável: A.

18. Validação de input server-side. Cliente é opcional, servidor é obrigatório. Use zod, joi, pydantic — algo que garanta que o payload bate com schema esperado. Rejeita o resto.

19. Uploads validados por conteúdo, não extensão. Um .jpg pode ser PHP. Valide magic bytes (file no Linux, biblioteca filetype em JS/Python). Store em bucket separado, sem execução, com URL assinada.

Operação

20. Endpoint público de status + monitoramento externo. UptimeRobot, Better Uptime ou Pingdom rodando de fora, alertando no WhatsApp/Slack. Se cair, você sabe antes do cliente reclamar.

Bônus: varredura contínua ligada. Depois do MVP no ar, ligue um scanner externo para pegar o que você esqueceu. Custa menos que uma refeição de time por mês, evita virar case da imprensa.

Ordem de execução em 3 dias

Se você tem 3 dias antes do lançamento e essa lista está toda vermelha:

Dia 1 — Itens 1, 2, 3, 4, 5, 13, 14 (autenticação, sessão, HTTPS, secrets). Essas são as portas da frente.

Dia 2 — Itens 6, 7, 15, 16, 17, 18, 19 (autorização, ambientes, headers, input, upload). Corpo da aplicação.

Dia 3 — Itens 8, 9, 10, 11, 12, 20 + varredura. Compliance LGPD e observabilidade.

O que sua diretoria (ou seu conselho) precisa saber

Três números que caem em pauta assim que tem cliente enterprise ou investidor série A:

  • Onde estão os dados dos clientes (região, provedor, backup).
  • O que acontece se a ANPD bater na porta: você tem o mapeamento? DPO nomeado? (Aliás, não precisa ser pessoa dedicada — pode ser o próprio CTO, mas precisa estar formalizado.)
  • Última auditoria/varredura de segurança. Se a resposta é "nunca fizemos", você não passa em due diligence.

O que não fazer

  • Não gaste R$ 40k em pentest antes do MVP. Não vale a pena — o produto vai mudar antes do relatório final.
  • Não instale SIEM. Não tem quem opere.
  • Não contrate DPO externo caro. No começo, pode ser interno formalizado.
  • Não copie política de privacidade de outra empresa sem ler. É comum o texto falar de dados que você não coleta e omitir o que coleta.

A Varredura roda como plano barato no lançamento do MVP e cresce com você. Fatura em BRL, sem contrato anual, sem instalar nada. Rode agora.

EV

Equipe Varredura

Time de pesquisa de segurança · Varredura

Sua app em produção passa por essa análise?

Rode uma varredura autônoma em ~60 segundos. Sem cadastro.

Analisar minha aplicação →