Guia · Checklist
Checklist de segurança web antes de lançar (2026)
8 min de leitura · atualizado em 12 de julho de 2026
Lançar é a hora em que sua aplicação vira alvo. Bots varrem a internet inteira atrás de portas abertas, headers ausentes e senhas fracas — e a maioria dos incidentes começa por algo trivial que ninguém revisou antes do deploy. Este checklist cobre o que barra o ataque oportunista. Passe grupo por grupo; cada item é uma pergunta de sim ou não.
O checklist
1. Transporte & headers
- HTTPS em tudo — certificado válido, redirect automático de HTTP para HTTPS, sem conteúdo misto (mixed content).
- HSTS ligado — header
Strict-Transport-Securitycommax-agelongo, para o navegador nunca cair de volta em HTTP. - CSP definida —
Content-Security-Policyrestringindo de onde scripts, estilos e frames podem carregar (a defesa mais forte contra XSS). - X-Content-Type-Options: nosniff — impede o navegador de adivinhar tipos de conteúdo e executar o que não devia.
- Cookies endurecidos — flags
Secure,HttpOnlyeSameSiteem todo cookie de sessão. - Headers extras:
Referrer-Policy,X-Frame-Options(ouframe-ancestorsna CSP) contra clickjacking.
2. Autenticação & sessão
- Senhas com hash forte — bcrypt, scrypt ou Argon2. Nunca MD5, SHA1 puro ou texto plano.
- Política de senha mínima — comprimento razoável e bloqueio de senhas vazadas conhecidas.
- MFA disponível — ao menos para contas administrativas e, de preferência, oferecido a todos os usuários.
- Sessão com expiração — timeout de inatividade, invalidação no logout e rotação do token após login.
- Proteção contra brute force — rate limiting no login, lockout progressivo ou captcha após tentativas falhas.
- Sem IDOR — toda rota que acessa um recurso por ID valida se o usuário logado tem direito àquele recurso (não confie só no ID vindo do cliente).
3. Entrada & saída
- Validação por allowlist — valide todo input contra o que é permitido, não contra o que é proibido. Aplique no servidor, não só no front.
- Prevenção de XSS — escape na saída por contexto (HTML, atributo, JS) e CSP como segunda camada.
- Prevenção de SQL injection — queries parametrizadas / prepared statements em todo acesso a banco. Nunca concatene input em SQL.
- Upload seguro — valide tipo e tamanho, gere nome próprio no servidor, armazene fora da raiz web e nunca execute o que foi enviado.
- Trate também injeção em comandos de sistema, templates e cabeçalhos.
4. Infra & segredos
- Segredos em variáveis de ambiente — chaves, tokens e senhas fora do código, injetados no runtime.
- Nenhum segredo no repositório — nem no histórico do Git. Verifique com um scanner de segredos e rotacione o que já vazou.
- Menor privilégio — o app roda com o usuário e as permissões mínimas; o usuário do banco não é superusuário.
- Rate limiting global — limite requisições por IP/conta nas rotas sensíveis (login, APIs, reset de senha).
- WAF / proxy na frente — Cloudflare, Traefik ou similar para filtrar tráfego malicioso óbvio antes de chegar na app.
- Portas de banco, cache e administração fechadas para a internet — acesso só pela rede interna.
5. Dependências & superfície
- Scan de dependências — rode
npm audit, Dependabot ou equivalente e atualize pacotes com CVE conhecida. - Rotas de debug removidas — endpoints de teste, painéis internos e consoles de admin expostos por engano saem antes do go-live.
- Erros discretos — nada de stack trace, versão de framework ou query no banco vazando na tela do usuário. Log detalhado fica no servidor.
- Superfície mínima — desative features, métodos HTTP e integrações que você não usa.
- Remova credenciais e contas padrão de qualquer serviço.
6. Observabilidade & recuperação
- Logs de segurança — logins, falhas de auth, ações administrativas e erros ficam registrados (e sem dados sensíveis em texto plano).
- Alertas configurados — alguém é avisado quando algo anormal acontece (pico de erros, tentativas de login, uso de CPU/disco).
- Backups testados — backup automático e, o mais importante, um restore que você já validou de verdade. Backup nunca testado não é backup.
- Plano de incidente — quem faz o quê se algo vazar: como revogar acesso, avisar usuários e conter o dano.
7. Validação final
- Rodar um pentest antes do go-live — não basta ter os controles no papel; valide que eles seguram um ataque de verdade.
- Corrija o que o pentest achou e rode de novo antes de abrir ao público.
- Re-teste a cada mudança relevante — segurança não é evento único, é rotina.
Resumo: risco × item
| Risco | Item que barra |
|---|---|
| Interceptação de tráfego | HTTPS + HSTS |
| Roubo de sessão | Cookies Secure/HttpOnly/SameSite |
| XSS | CSP + escape na saída |
| SQL injection | Queries parametrizadas |
| Quebra de conta | MFA + rate limiting no login |
| Acesso indevido a dados | Autorização por recurso (sem IDOR) |
| Vazamento de credencial | Segredos em env, nada no repo |
| Exploração de biblioteca | Scan de dependências atualizado |
| Perda de dados | Backup testado + plano de incidente |
| Tudo o que passou despercebido | Pentest de validação final |
Marcar os itens não é o mesmo que estar seguro
Este checklist te tira da faixa do ataque preguiçoso — que é a maioria. Mas um Content-Security-Policy mal configurado ainda deixa passar XSS, e uma autorização que parece correta pode ter um IDOR escondido em uma rota específica. A única forma de saber se os controles seguram é atacá-los de verdade.
É aí que entra a validação final. O Escudo Code é o pentest automatizado que explora de verdade: executa exploits reais contra a sua aplicação, confirma cada achado com evidência e severidade CVSS, e descarta o que não se confirma. Rode antes do lançamento para fechar o checklist com dado, não com suposição — veja como testamos ou os planos.
Depois do go-live, o próximo passo é tornar isso rotina: teste seu SaaS a cada deploy e entenda o que é um pentest na prática.
Perguntas frequentes
Preciso de tudo isso para um MVP?+–
Os grupos 1 a 4 (transporte/headers, autenticação, entrada/saída e segredos) são inegociáveis mesmo no MVP menor — é o que barra o ataque automatizado. Observabilidade e plano de incidente você pode montar mais leve no começo, mas HTTPS, senhas com hash, validação de input e segredos fora do repo não têm versão MVP: ou tem, ou você está exposto no dia 1.
Configurar os headers de segurança já basta?+–
Não. Headers como CSP e HSTS são uma camada importante e barata, mas cobrem só parte da superfície. Eles não protegem contra IDOR, SQL injection em uma query esquecida, um segredo vazado no Git ou uma rota de admin exposta. Headers reduzem risco; não substituem autorização correta, validação de input nem o pentest de validação.
Quando rodar o pentest: antes ou depois de lançar?+–
Antes do go-live, como validação final — para corrigir o que ele achar enquanto ninguém real está usando o sistema. E depois, de forma recorrente, a cada mudança relevante. Pentest não é um evento único de pré-lançamento; é uma rotina que acompanha cada deploy.
Dá para automatizar esse checklist?+–
Parte dele sim: scan de dependências, verificação de headers e busca por segredos no repositório rodam no seu CI/CD. Já os itens de lógica (autorização, IDOR, fluxos de negócio) precisam de teste ativo. Um pentest automatizado que explora de verdade cobre boa parte disso em minutos e cabe no pipeline.
Teste o seu site agora — a partir de R$50.
Só a URL. Pentest automatizado que ataca de verdade, ao vivo, com relatório do que corrigir.
Rodar o primeiro pentest