Status: Approved · v2 · SPEC-ARCH-SECURITY-001
depends_on: SPEC-DOMAIN-PERMISSION-001, SPEC-DOMAIN-PAYMENT-001
used_by: IS-ZERO-00.4, IS-MVP-09.4, IS-MVP-14.3, IS-MVP-15.2
Segurança e privacidade
Controles mínimos concretos para proteger contas, gestão, pagamentos, uploads e dados públicos.
Modelo
Threat model MVP
Principais riscos: account takeover, IDOR em gestão, upload malicioso, vazamento de public/private DTO, duplicação financeira, webhook forjado, abuso de auth/report e open redirect em AuthIntent.
Controles
- Auth/refresh rotation e rate limit.
- Permission guards por entity+key; nunca confiar em ID fornecido sem membership lookup.
- Validation/sanitization e limites de payload.
- Presigned uploads com allowlist, size e ownership; processamento futuro fora de request.
- Webhook signature, replay protection e event idempotency.
- Secrets apenas server-side;
.env.examplesem valores reais. - CORS, HTTPS e headers seguros por ambiente.
- DTO público construído explicitamente.
Privacidade
Data minimization; controls de player/address/supporter; direito de revisão/anonimização via support request. Não transformar guests em perfis públicos sem confirmação.
Checklist por endpoint
- Quem pode chamar?
- Qual entity/membership?
- Qual DTO de saída?
- Precisa idempotência/audit/rate limit?
- Quais campos devem ser mascarados?
- Existe enum/status allowlist?
Critérios de aceite
- IDOR testado nos módulos de gestão.
- Nenhum segredo público.
- Webhook não processa replay.
- Privacy flags afetam search/cards/public endpoints.