# Secure Coding

> Regras de codificação segura para qualquer código de aplicação. Use ao escrever, modificar ou revisar código backend. Cobre validação de entrada, proteção contra injeção, criptografia, headers, cookies, logging e dependências.

- Skill: `paulohfs/secure-coding` (Agent Skill)
- Install (CLI): `npx skillmds@latest add paulohfs/secure-coding`
- Raw SKILL.md: https://api.skillmd.com/api/skills/paulohfs/secure-coding/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: PauloHFS (https://skillmd.com/u/paulohfs)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/paulohfs/secure-coding

---


# 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-Policy` para mitigar XSS
- Habilite `Strict-Transport-Security` (HSTS)
- Configure `Referrer-Policy`
- Configure `Permissions-Policy`
- Envie `X-Content-Type-Options: nosniff`
- Envie `X-Frame-Options: deny` (ou `frame-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-TOKEN` e valide no servidor
- Configure rotas que mudam estado para aceitar apenas POST
- Desativar CSRF exige justificativa documentada

