Isolamento por tenant
- Toda query B2B filtra por
tenantId; policies de Row Level Security do Supabase garantem o isolamento no banco. - Chaves de API por tenant, credenciais de provedores de video/avatar e tokens OAuth sao cifrados em repouso com AES-256-GCM.
- A impersonacao de suporte usa cookie httpOnly assinado HMAC, curto (1h), e e um overlay em memoria — o auth do Supabase nunca e modificado. Todo start/stop de impersonacao e auditado.
Segredos & OAuth
- O OAuth state e assinado HMAC-SHA256 (
OAUTH_STATE_SECRET) com nonce Redis (anti-replay, TTL 15min) em todoconnecte validado contra a sessao em todocallback. - Senhas de links de midia compartilhada sao guardadas como
salt:hashvia scrypt, com rate limit nas tentativas.
Uploads & seguranca de conteudo
- O
storageUrlde upload precisa comecar com o prefixo publico de storage do Supabase, senao e rejeitado com 422. - Submissoes de assignment ficam em bucket privado com prefixo validado (
{tenantId}/{courseId}/{lessonId}/{userId}/); downloads usam URLs assinadas temporarias com checagem de ownership. - HTML de usuarios/LLMs e sanitizado server-side (DOMPurify) antes de qualquer
dangerouslySetInnerHTML, incluindo o HTML servido ao app mobile. - Input e validado com Zod nas rotas POST/PATCH; prevencao de SSRF bloqueia IPs privados IPv4/IPv6 e metadata endpoints.
Moderacao
Um supervisor de chat IA classifica os turnos do tutor (severidade + categoria) em background e pode advertir ou colocar em quarentena; sinais de self-harm disparam um fluxo de safety nao-punitivo com recursos de crise e notificacao urgente ao admin.
LGPD / privacidade
- Export (Art. 18 IV):
GET /api/user/data-exportretorna todos os dados do usuario em JSON, rate limit de 1 req por 24h (cooldown Redis). - Delecao (Art. 18 VI):
DELETE /api/user/accountanonimiza PII e apaga dados conversacionais, mas mantem dados de aprendizado (notas, conclusoes, tentativas de quiz) por ~5 anos de retencao fiscal (Art. 16 I). - Paginas publicas
/privacye/termsacessiveis sem autenticacao. - Observabilidade via Sentry usa Replay com texto mascarado e midia bloqueada para LGPD.
Auditoria
Acoes administrativas sensiveis (impersonacao, mudanca de plano/config, pagamentos manuais, mudanca de role) sao registradas num audit log administrativo imutavel com IP e user-agent.