2.4 KiB
11 — LGPD e segurança
Contexto do projeto (leia sempre)
Sistema web "Briefing de Site" da SeConectai: o cliente se cadastra e depois preenche o briefing de criação do site, com um botão Ajuda em cada pergunta que abre um popup com o texto do guia auxiliar. O dono (Tiago) acompanha tudo por um painel admin.
Stack fixa: Next.js 14+ (App Router) + TypeScript, PostgreSQL 16, Prisma, Tailwind + shadcn/ui, React Hook Form + Zod, Auth.js v5 (Credentials, estratégia JWT), Docker Compose. Idioma da interface: pt-BR.
Regras gerais: leia 00-arquitetura-briefing-site.md e 99-progresso.md antes de começar; não avance se a etapa anterior estiver incompleta; ao terminar, devolva o 99-progresso.md atualizado. Não invente dependências fora da stack. Nada de senhas de clientes em lugar nenhum.
Pré-requisito
Etapas 01–10 concluídas.
Tarefa
- Páginas legais:
/privacidade(Política de Privacidade) e/termos, com texto-base editável (marcar claramente como "revisar com assessoria jurídica"); links no rodapé e no cadastro. - Direitos do titular: em "Minha conta", cliente pode ver e editar seus dados, baixar seus dados (JSON) e solicitar exclusão (cria
SolicitacaoExclusao; admin processa — anonimiza o cadastro mantendo o briefing sem identificação pessoal, conforme decisão do Tiago). - Cabeçalhos de segurança no
next.config: CSP,X-Frame-Options,Referrer-Policy,Permissions-Policy, HSTS em produção. - Proteções: rate limit nos endpoints de cadastro, login, recuperação e upload; proteção CSRF nas server actions (padrão Next) e checagem de origem nas route handlers; sanitização de saída (React já escapa; nunca usar
dangerouslySetInnerHTMLcom dados do cliente). - Logs: nunca registrar senha, token, CPF ou conteúdo de respostas; logar apenas ids e eventos.
- Backups: script
scripts/backup.shcompg_dump+ cópia do volume de uploads, com rotação. - Revisão final: tentar manualmente acessar recurso de outro cliente em cada rota (briefing, resposta, anexo, PDF) e confirmar bloqueio.
Critérios de aceite
- Cabeçalhos de segurança presentes (verificar com
curl -I). - Teste manual de isolamento entre clientes passa em todas as rotas.
grepno código não encontra CPF/senha em logs.- Backup e restauração testados em ambiente limpo.
Atualize 99-progresso.md (11).