Camada: Arquitetura — Padrões e boas práticas técnicas para o time de desenvolvimento.
Aplica-se a: Todas as APIs REST do CRM.
1. Autenticação
- Nunca use Basic Auth — use padrões consolidados como JWT ou OAuth 2.0.
- Não reinvente mecanismos de autenticação — use bibliotecas auditadas.
- Implemente número máximo de tentativas de login e bloqueio temporário após falhas consecutivas.
- Use criptografia para todos os dados sensíveis em trânsito e em repouso.
2. JSON Web Tokens (JWT)
| Prática | Descrição |
|---|
| Secret seguro | Use um secret longo e aleatório para dificultar força bruta |
| Algoritmo no backend | Nunca extraia o algoritmo do header do token — defina-o fixo no servidor |
| Expiração curta | Defina TTL (access token) e RTTL (refresh token) o mais curtos possível |
| Payload mínimo | Evite armazenar dados sensíveis no payload do JWT |
| Tamanho do payload | Mantenha pequeno para reduzir overhead nas requisições |
3. OAuth 2.0
- Sempre valide o
redirect_uri no servidor.
- Prefira
response_type=code em vez de token (Authorization Code Flow).
- Use o parâmetro
state para prevenir ataques CSRF.
- Defina escopos padrão e valide o escopo para cada aplicação.
4. Controle de Acesso
- Implemente rate limiting e throttling para prevenir DDoS e força bruta.
- Use HTTPS obrigatoriamente — nunca exponha endpoints em HTTP puro.
- Configure o cabeçalho HSTS com SSL para prevenir ataques de downgrade.
- Desative a listagem de diretórios no servidor web.
- APIs privadas (admin, super admin) devem ser acessíveis apenas de IPs autorizados (allowlist).
5. Validação de Entrada
- Valide e sanitize todos os inputs antes de processar.
- Verifique se todos os endpoints estão protegidos por autenticação.
- Evite expor IDs numéricos sequenciais em URLs — prefira UUIDs.
- Desative a análise de entidades XML se não for necessária (prevenção de XXE).
- Desative expansão de entidades em XML, YAML e formatos similares.
- Use CDN para uploads de arquivos — nunca processe uploads diretamente no servidor da API.
- Evite bloqueios HTTP ao processar grandes volumes de dados.
- Certifique-se de que o modo debug está desativado em produção.
6. Cabeçalhos de Resposta (Saída)
| Cabeçalho | Valor recomendado | Finalidade |
|---|
X-Content-Type-Options | nosniff | Previne sniffing de MIME type |
X-Frame-Options | deny | Previne clickjacking |
Content-Security-Policy | default-src 'none' (base) | Previne XSS e injeção de conteúdo |
x-powered-by | Remover | Elimina fingerprinting do servidor |
- Force o
Content-Type correto em todas as respostas.
- Nunca retorne dados sensíveis (senhas, tokens, chaves de API) nas respostas.
- Retorne códigos HTTP adequados para cada operação (
200, 201, 400, 401, 403, 404, 422, 500).
7. Monitoramento
- Centralize logs de todos os serviços e componentes.
- Use agentes para monitorar todas as requisições, respostas e erros.
- Configure alertas para canais relevantes (Slack, e-mail, PagerDuty).
- Nunca registre dados sensíveis nos logs (senhas, tokens, CPF, cartão).
- Implemente IDS/IPS para detectar padrões de ataque em tempo real.
8. CI/CD e Qualidade
- Audite design e implementação com testes unitários e de integração.
- Use revisão de código obrigatória — proíba auto-aprovação.
- Execute análise de segurança estática (SAST) continuamente no pipeline.
- Verifique dependências em busca de vulnerabilidades conhecidas (Snyk, Dependabot).
- Projete uma estratégia de rollback para toda implantação em produção.