Desenvolvimento Seguro — Regras Gerais e Backend
Checklist de referência para escrita e modificação de código. Antes de considerar o trabalho pronto, verifique cada regra aplicável ao trecho produzido. Regra violada = corrigir ou documentar explicitamente por que não se aplica ao contexto.
Validação de Entrada
- Valide e sanitize TODAS as entradas do usuário antes de processá-las
- Valide na camada de serviço, além do controller — a validação de interface não é controle de segurança
- Rejeite entradas fora do formato esperado (whitelist, não blacklist)
- Limite tamanho e tipo de arquivos enviados pelo usuário
Proteção contra Injeção
- Use ORM em vez de queries SQL diretas
- Com SQL direto, use SEMPRE prepared statements / parameterized queries
- Entrada do usuário nunca é concatenada em queries SQL
- Para XML, desative entity parsing e entity expansion (XXE e XML bomb)
- Escape dados de saída para prevenir XSS
Autenticação e Sessão
- Use padrões conhecidos: JWT e OAuth 2.0 — Basic Auth só fora de produção
- Implemente rate limiting e bloqueio temporário contra força bruta (máx. 5 tentativas)
- Configure timeout para sessões
- Tokens de sessão são fortes e imprevisíveis
- Verifique autorização mesmo para usuários já autenticados — autenticado ≠ autorizado
- Permita e incentive 2FA; force para administradores
Criptografia e Senhas
- Senhas nunca em texto puro — hash com salt (bcrypt, argon2, scrypt ou PBKDF2)
- Gere um salt único por usuário
- Armazene o salt separado do hash
- Criptografe todo dado sensível antes de armazenar
- Use SSL/TLS para toda comunicação (HTTPS obrigatório)
- Obfusque chaves primárias com UUID para resistir a enumeração
Credenciais e Segredos
- Credenciais, chaves de API e segredos vivem em gerenciador de segredos (AWS Secrets Manager, OCI Vault, etc.) — nunca no código
- Logs nunca carregam dados sensíveis (chaves de API, senhas, tokens, dados pessoais)
- Filtre dados confidenciais antes de gravar em logs
Headers HTTP
- Oculte a versão do servidor (NGINX:
server_tokens off) - Habilite
Content-Security-Policypara mitigar XSS - Habilite
Strict-Transport-Security(HSTS) - Configure
Referrer-Policy - Configure
Permissions-Policy - Envie
X-Content-Type-Options: nosniff - Envie
X-Frame-Options: deny(ouframe-ancestors 'none'via CSP) - Remova headers de identificação:
X-Powered-By,Server,X-AspNet-Version
Cookies
- Cookies de autenticação:
httpOnly=true,secure=true,SameSite=Lax(no mínimo) - Restrinja cookies a domínio específico
- Configure expiração razoável
- Ative proteção CSRF em todas as views que realizam ações para usuários autenticados
Logging e Monitoramento
- Registre: data/hora, usuário, IP, tipo de solicitação, path da API, resposta
- Registre ações do usuário (login, alteração de senha) para auditoria
- Monitore a aplicação continuamente para atividades suspeitas
Dependências e Bibliotecas
- Mantenha todas as dependências atualizadas com correções de segurança
- Verifique vulnerabilidades com OWASP Dependency Check ou similar
- Use apenas dependências homologadas pelo cliente/projeto
- Envie código apenas para plataformas homologadas
Qualidade e Configuração
- Modo debug permanece desativado em produção
- Código backend fica fora da raiz web
- Habilite Subresource Integrity (SRI) para recursos externos
- Dados de cartão de crédito não são armazenados no sistema
- Redirecionamentos para URLs fornecidas pelo usuário exigem validação contra whitelist
- Use bibliotecas de template com proteção XSS embutida
CSRF
- Adicione tokens CSRF a todas as requisições que mudam estado do servidor
- Adicione header
X-CSRF-TOKENe valide no servidor - Configure rotas que mudam estado para aceitar apenas POST
- Desativar CSRF exige justificativa documentada