Segurança
Controles por separação de responsabilidades.
Segurança não depende de uma única biblioteca. O desenho combina isolamento de rede, privilégios mínimos, criptografia do cofre, validação de entrada e revisão humana.
Isolamento
Somente o frontend web deve receber domínio público. API, processador e PostgreSQL não publicam portas no Compose. O código do processador de sanitização não consulta PostgreSQL; credenciais e chaves de infraestrutura devem permanecer escopadas apenas aos serviços que realmente precisam delas e o isolamento é verificado operacionalmente no deployment.
Banco de dados
O PostgreSQL de produção usa a série 17 em manutenção de segurança, checksums de dados e papéis separados. O runtime não é SUPERUSER, não possui BYPASSRLS, CREATE ou TEMP e recebe apenas as operações necessárias por tabela. Políticas RLS com FORCE RLS protegem os dados operacionais de tenant.
Sessão
Senhas de conta usam Argon2id. Sessões usam token opaco armazenado em cookie HttpOnly; operações autenticadas de alteração exigem proteção CSRF. Em produção, o cookie é Secure e SameSite=Strict.
Documentos e OCR
O nome original do arquivo não é encaminhado ao processador. Limites de tamanho, páginas, pixels, tempo e concorrência são aplicados em múltiplas camadas. OCR de sanitização é executado com Tesseract na infraestrutura isolada do SANITIZE; “local” aqui significa local ao processor do serviço, não ao navegador do visitante. O Engine Next executa OCR local e reconstrói saídas sanitizadas sem reutilizar metadados do arquivo original. Para imagens de CNH e CIN, a liberação é fail-closed enquanto QR, fotografia, MRZ e assinatura ainda não possuem detectores visuais dedicados qualificados nesta geração; esses arquivos são bloqueados em vez de receber uma saída visual incompleta. Nenhum documento é enviado a serviço externo pelo processor.
Cofre
O formato sanitize-vault-v2 usa PBKDF2-HMAC-SHA256 e AES-256-GCM e foi desenhado para interoperabilidade entre Python e Web Crypto.
Autenticação Google OIDC
O login Google usa Authorization Code no backend com state, nonce e PKCE S256. O retorno é validado por assinatura, emissor, audiência, expiração e nonce. Tokens OAuth do Google não são persistidos e a área /sanitize não carrega SDK ou scripts Google.
Terceiros
A área de processamento não inclui AdSense, Analytics, pixels, chat de terceiros, session replay ou scripts de marketing.
Divulgação responsável
Um canal público específico de segurança será publicado antes da abertura geral. Enquanto não houver um canal público específico de segurança, relatos devem seguir o canal oficial pelo qual o usuário recebeu acesso ou suporte, sem incluir documentos reais ou credenciais no relato.
Leitor Privado
O Leitor Privado usa o build compatível legacy do PDF.js 6.2.108 empacotado na própria imagem, sem CDN. A renderização PDF usa apenas canvas, com scripting/XFA/eval desabilitados, worker limitado à mesma origem e limites locais de arquivo, páginas, pixels e canvas.