Num relance
-
A mesma proteção em todos os planos
Todos os planos têm a mesma criptografia e o mesmo isolamento. Os planos superiores acrescentam controle, não segurança.
-
Criptografado em repouso
Os volumes do PostgreSQL, os objetos no R2 e os backups são criptografados em repouso pelos provedores. Os dados enviados, o HTML, os PDFs e as versões em Markdown dos relatórios são criptografados de novo com uma chave de dados por espaço de trabalho antes de ir para o armazenamento; apagar um espaço de trabalho destrói a chave.
-
Criptografado em trânsito
TLS 1.2 ou superior em todos os endpoints públicos; HSTS; o tráfego interno entre a aplicação e o plano de renderização fica na rede privada da Railway e é autenticado com um HMAC.
-
Hospedagem na UE
A aplicação, o banco de dados, os workers e o plano de renderização rodam na região EU West da Railway (Amsterdã); dados enviados, HTML, PDFs e versões em Markdown ficam no Cloudflare R2 com a restrição de jurisdição da UE. A região é uma propriedade do seu espaço de trabalho; hoje só a região da UE está ativa.
-
Segurança em nível de linha
Cada tabela de clientes leva o id do espaço de trabalho, e a segurança em nível de linha do PostgreSQL é imposta nela. O serviço web se conecta com um papel que não consegue contorná-la, e toda a suíte de testes roda uma segunda vez com esse papel.
-
Versões de modelo imutáveis
Publicar cria uma versão só de acréscimo, presa a um hash do conteúdo do kit; triggers do banco recusam alterações em versões publicadas. Os relatórios ficam ligados a uma versão, e o HTML e o PDF são congelados na renderização, com seus hashes guardados no relatório.
-
Nenhum código de cliente é executado
Um modelo é JSON validado contra um esquema. O plano de renderização o interpreta com um kit fixo de widgets; o Chromium roda com JavaScript desligado e com toda requisição de rede bloqueada. O plano de renderização não tem banco de dados, nem bucket, nem segredos além da chave HMAC.
-
Um DPA para cada cliente
A descrição do tratamento, as medidas técnicas e organizacionais e a lista de suboperadores são anexos. Comprometemo-nos a avisar você de uma violação de dados pessoais em até 48 horas depois de tomarmos conhecimento dela.
-
Links assinados e relatórios privados no Pro
URLs assinadas dão acesso por tempo limitado sem um link compartilhável; relatórios privados abrem só para membros do espaço de trabalho com login. O modo sem retenção, no Pro, apaga cada relatório um tempo definido depois que ele fica pronto.
-
Todo PDF pode ser conferido
A partir do Standard, a impressão digital de cada PDF real é registrada quando ele é gerado. Qualquer pessoa pode conferir uma cópia na página de verificação: o arquivo é processado no navegador dela e nunca é enviado. Os registros não guardam conteúdo do relatório e ficam guardados por 10 anos.
-
Ainda sem BAA da HIPAA
Não envie à Pressfox informações de saúde protegidas pela lei dos EUA. Dados de saúde sob o GDPR (art. 9) podem ser tratados conforme o DPA quando a sua própria base legal os cobrir.
1. A arquitetura em um parágrafo
Três partes implantáveis. Um plano de controle em Django cuida de contas, espaços de trabalho, modelos, relatórios, cobrança e da API pública. Um plano de renderização privado em Node recebe um documento validado, os dados e um tema, gera o HTML, imprime em PDF com o Chromium e devolve os dois; ele não guarda nada e não acessa nada. Um app React estático é o painel e o editor. Cada tabela de clientes leva o id do espaço de trabalho, e a segurança em nível de linha do PostgreSQL reforça o isolamento que a própria aplicação aplica, então um erro numa consulta não consegue vazar linhas de outro espaço de trabalho.
2. Infraestrutura e provedores
A aplicação, o banco de dados PostgreSQL, os workers em segundo plano e o plano de renderização rodam na Railway, na região EU West (Amsterdã). O Cloudflare fornece DNS, TLS, a CDN, os hostnames personalizados para relatórios no seu próprio domínio e o armazenamento de objetos R2 com a restrição de jurisdição da UE. A Paddle cuida dos pagamentos como revendedora (merchant of record). A Resend envia e-mails a partir da sua região de envio na UE (Irlanda). O Sentry recebe relatórios de erro na sua região da UE (Frankfurt), com o conteúdo dos dados removido. A Anthropic processa texto para os recursos opcionais de IA. O Google só é usado quando você escolhe entrar com o Google. A produção roda separada do ambiente de homologação.
A página de suboperadores (em inglês) é a lista única e oficial: o que cada provedor faz, onde, com qual mecanismo de transferência, e o aviso que damos antes de incluir um novo.
3. Criptografia e chaves
- Os dados enviados, o HTML, os PDFs e as versões em Markdown dos relatórios são criptografados com uma chave de dados por espaço de trabalho antes de ir para o armazenamento de objetos. Apagar um espaço de trabalho destrói a chave dele.
- TLS 1.2 ou superior em todos os endpoints públicos, com HSTS. A aplicação e o plano de renderização conversam pela rede privada da Railway, e cada requisição entre eles é autenticada com um HMAC.
- As chaves de API são por espaço de trabalho, com o prefixo
pf_live_oupf_test_, mostradas uma vez, guardadas com hash e revogáveis a qualquer momento. Chaves de teste geram relatórios com marca d'água e sem cobrança. - As senhas de relatório são guardadas com hash, nunca em texto puro.
- As senhas de PDF são usadas uma vez, para criptografar o arquivo, e apagadas junto com os dados enviados quando o relatório fica pronto; não conseguimos recuperá-las. A senha de permissões é aleatória para cada relatório e descartada, então ninguém consegue mudar as permissões de um PDF depois.
- Só identificadores públicos: as chaves internas nunca saem do banco de dados. Os links de relatório usam um token aleatório separado, que não deriva do id do relatório.
4. Isolamento dos espaços de trabalho e papéis
- Cada tabela de clientes leva o id do espaço de trabalho, e a segurança em nível de linha do PostgreSQL é imposta nela, então o próprio banco recusa linhas de outro espaço de trabalho.
- O serviço web se conecta ao banco com um papel que não consegue contornar a segurança em nível de linha.
- Na integração contínua, a suíte completa de testes roda uma segunda vez com esse papel, então uma consulta que só funciona contornando as políticas quebra o build.
- Quatro papéis (proprietário, administrador, editor, leitor) correspondem a uma única matriz de permissões; cada endpoint da API é conferido pelo mesmo mecanismo.
5. Login e sessões
- Sem senhas. Você entra com um código de uso único enviado por e-mail, ou com o Google. Três tentativas erradas invalidam o código, e você pede um novo.
- Um novo cadastro fica pendente até o código ser confirmado, então ninguém cria uma conta com um endereço que não controla.
- Os pedidos de login e de código têm limite de frequência.
- As sessões ficam no servidor. Uma sessão termina depois de 7 dias sem uso e depois de 30 dias no máximo.
- Sua conta lista as suas sessões ativas, para você sair de outros dispositivos.
- Enviamos um e-mail quando a sua conta entra a partir de um dispositivo novo.
6. O plano de renderização
Nenhum código de cliente roda. Um modelo é JSON validado contra um esquema, interpretado pelo plano de renderização com um kit fixo de widgets. O Chromium o imprime com JavaScript desligado e com toda requisição de rede bloqueada. Cada renderização tem prazos, então uma tarefa travada é interrompida em vez de ficar rodando. O plano de renderização só é acessível pela rede privada: ele não tem endereço público, nem banco de dados, nem bucket, nem segredos além da chave HMAC.
7. Os dados que você envia
- Todos os dados enviados são validados contra o contrato do modelo antes de qualquer renderização; dados que não batem são recusados.
- O material de que um relatório é feito, os dados enviados e as imagens buscadas nas suas URLs, é apagado assim que o relatório fica pronto, ou 24 horas depois de uma renderização que falhou.
- As imagens são buscadas nas suas URLs atrás de uma proteção contra falsificação de requisições do lado do servidor (SSRF): o endereço é conferido, e a conexão fica presa ao endereço conferido.
- Os metadados das fotos, incluindo a localização GPS, são removidos das versões impressas das suas imagens.
- A versão em Markdown de um relatório é gerada por código a partir do próprio relatório, não por IA.
- As propriedades de um PDF trazem só o título, o nome do emissor e identificadores públicos: nunca outros dados que você enviou, nem os nomes ou versões das ferramentas que o geraram.
8. Acesso aos relatórios
Por relatório, na criação: link aberto (token impossível de adivinhar), senha, data de validade e, no Pro, URLs assinadas e relatórios privados. A partir do Standard, o próprio PDF também pode abrir só com uma senha: AES-256, definida por relatório ou tirada de um campo dos dados; o leitor continua podendo imprimir, copiar e usar um leitor de tela. A tela de senha bloqueia depois de tentativas erradas repetidas. Os QR codes são assinados por relatório. As páginas hospedadas não gravam cookies de rastreamento; o único cookie é o da tela de senha, restrito ao hostname do relatório. A personalização por espaço de trabalho das páginas de erro, de expiração e de senha ainda não está pronta; hoje elas levam o nome da Pressfox.
9. Verificar um documento
- A partir do Standard, o PDF de cada relatório real recebe um registro de verificação quando fica pronto: a impressão digital SHA-256, o nome do emissor e a hora da emissão e, depois, se uma correção o substituiu ou o emissor o revogou. Relatórios de teste e relatórios no modo sem retenção não recebem nenhum.
- Quem tiver o PDF pode conferi-lo na página de verificação, em app.pressfox.io/verify ou em /verify no seu próprio endereço de relatórios. O navegador calcula a impressão digital; o arquivo nunca é enviado. A resposta é autêntico (quem o emitiu e quando), substituído, revogado com o motivo do emissor, ou não encontrado.
- Quando o seu espaço de trabalho tem o próprio endereço de relatórios, cada PDF imprime uma linha dizendo onde conferi-lo: nesse endereço, nunca no nosso. Ali, a página responde só pelos documentos do seu espaço de trabalho.
- Não encontrado significa que a Pressfox não emitiu o arquivo, ou que ele mudou depois de emitido: anotar ou salvar de novo um PDF muda a impressão digital. Uma cópia assinada no seu provedor de assinatura é um arquivo novo; confira a cópia emitida pela Pressfox.
- Um registro não guarda título, dados nem etiquetas, então sobrevive ao relatório: fica guardado por 10 anos e é apagado com o espaço de trabalho. As consultas têm limites na borda da rede e por endereço, sem captcha e sem cookies. A verificação prova que um arquivo não mudou desde que foi emitido; não é uma assinatura nem um selo eletrônico.
10. Webhooks e a API
- Cada entrega de webhook é assinada segundo a especificação Standard Webhooks, para que o seu endpoint confira que veio de nós e não foi alterada; o horário assinado permite recusar entregas antigas.
- As entregas que falham são tentadas de novo numa escala de 1 minuto a 24 horas. Um endpoint que falha por 3 dias sem nenhum sucesso é desativado automaticamente; o app mostra quando e por quê ao lado dele, e o registro de auditoria anota. Depois de corrigido o receptor, um proprietário ou administrador reativa o endpoint com um clique, mantendo a URL e o segredo de assinatura. Isso zera a contagem de falhas, começa um novo prazo de 3 dias e fica no registro de auditoria; os eventos perdidos enquanto ele esteve desativado podem ser reenviados a partir das entregas dele.
- Os endpoints de webhook passam pela mesma proteção contra SSRF da busca de imagens, presos ao endereço conferido, então um webhook não pode apontar para endereços internos.
- A API aceita chaves de idempotência, então uma requisição repetida depois de um timeout não cria um segundo relatório.
- A API tem limite de requisições por chave de API e por espaço de trabalho, em janelas de um minuto: 600 requisições por minuto por chave, das quais 120 podem criar relatórios, e 1.200 requisições (240 criações de relatório) por minuto somando todas as chaves de um espaço de trabalho, de teste e reais juntas. Uma requisição acima de um limite é recusada com HTTP 429 e um cabeçalho
Retry-After; toda resposta contada trazRateLimit-Limit,RateLimit-RemainingeRateLimit-Reset. Veja rate_limited (em inglês). - O login, o assistente de IA, o Playground, as importações de modelo e a tela de senha dos relatórios hospedados também têm limite de frequência.
11. Recursos de IA e agentes de IA
Os recursos de IA da Pressfox são opcionais e trabalham só com texto, nunca com imagens: rascunhos das traduções de um modelo, tradução dos campos de texto que você marcar no relatório, resumos nos relatórios, o assistente do editor e a montagem de um rascunho de modelo a partir de um PDF que você enviar (só o texto; o próprio PDF é apagado em até 24 horas). Um relatório renderizado nunca chama um modelo de IA: as traduções do modelo são revisadas e congeladas quando você publica, e o texto de IA que entra num relatório é escrito uma vez, antes da impressão, e apagado junto com os outros insumos do relatório quando ele fica pronto. Só os campos marcados de um relatório são enviados; o texto vai como dado, nunca como instrução, e é conferido antes do uso (marcadores, formatação e números precisam sobreviver). Esse texto é processado pela Anthropic nos Estados Unidos, conforme o DPA dela e as Cláusulas Contratuais Padrão, e não é usado para treinar modelos; relatórios, dados enviados e PDFs ficam na UE. Os recursos de IA ficam desligados em espaços de trabalho de saúde.
Agentes de IA podem se conectar à Pressfox via MCP. Você autoriza cada um numa tela de consentimento OAuth; um agente conectado pode encontrar modelos e criar, ler e compartilhar relatórios (ele não pode apagar relatórios, mudar modelos nem mexer em membros, chaves ou cobrança), e você pode desconectá-lo a qualquer momento. O MCP está em prévia: ligamos para um espaço de trabalho quando pedido.
12. Acesso da equipe
Não há painel administrativo em produção; as operações passam pelo console autenticado do provedor de hospedagem e por comandos de gestão auditados. Hoje só o fundador tem acesso à produção.
13. Pagamentos
A Paddle é a nossa revendedora (merchant of record): ela cuida do checkout, das faturas, dos impostos e dos reembolsos. Os dados do cartão vão para a Paddle; nós nunca recebemos números de cartão.
14. Registros, monitoramento e auditoria
- Os registros levam ids de requisição, nunca o conteúdo dos dados enviados. Um teste automático de redação de registros no build comprova isso.
- Os erros vão para o Sentry na UE (Frankfurt), com o conteúdo dos dados removido.
- Um registro de auditoria só de acréscimo anota logins, mudanças de papel, criação e revogação de chaves de API, publicações e exclusões de modelos. Ele é guardado por 1 ano em todos os planos e por 2 anos no Pro e no Enterprise, onde proprietários e administradores também podem baixá-lo em CSV ou NDJSON.
15. Backups e recuperação
O banco de dados tem recuperação para um ponto no tempo: podemos restaurá-lo para qualquer minuto das últimas 4 semanas. Os backups são criptografados em repouso. Vamos ensaiar uma restauração a cada trimestre, a primeira antes do lançamento geral. A meta é voltar em até 4 horas e perder no máximo 15 minutos de alterações; publicamos os tempos medidos quando um ensaio os registrar. As exclusões e as revogações (espaços de trabalho, relatórios, arquivos, chaves de API, links de relatórios, envios, convites e membros) são registradas fora do banco de dados, e o nosso procedimento de restauração reaplica as registradas desde o ponto de restauração antes de reabrirmos o serviço.
16. Retenção e exclusão
Nos planos pagos, os relatórios hospedados, os seus PDFs e os seus links ficam guardados enquanto a assinatura estiver ativa e por 30 dias depois que ela terminar, e depois são apagados. No Free, ficam guardados por 7 dias; no Enterprise, conforme o contrato. Um proprietário pode definir um prazo menor para o espaço de trabalho, e uma integração para um relatório. Cada relatório mantém o prazo com que foi criado: trocar entre planos pagos nunca o encurta. O armazenamento de relatórios tem um limite por plano; no limite, novos relatórios são recusados, e nada é apagado para abrir espaço. Relatórios de teste ficam guardados por 24 horas em todos os planos. O material de origem sai antes: os dados enviados e as imagens buscadas nas suas URLs são apagados assim que o relatório fica pronto, e 24 horas depois de uma renderização que falhou. A exclusão de um relatório ou de um espaço de trabalho chega ao banco de dados, ao armazenamento de objetos, ao cache da CDN e aos arquivos temporários do plano de renderização. Um espaço de trabalho excluído pode ser restaurado por 30 dias; depois apagamos os seus dados e destruímos a sua chave de criptografia. Os backups do banco de dados ainda podem guardar essa chave por no máximo 35 dias a mais; o sistema foi projetado para que, quando eles expirarem, os dados não possam mais ser decifrados, nem por nós nem por ninguém. A exportação do espaço de trabalho gera um arquivo legível por máquina com modelos, versões, perfis de marca, relatórios e metadados.
17. Modo sem retenção
No Pro e no Enterprise, um proprietário pode ligar o modo sem retenção para o espaço de trabalho, e uma integração pode pedi-lo para um relatório. Um relatório feito assim é apagado um tempo definido depois que fica pronto: entre 5 minutos e 24 horas, 1 hora se você não escolher outro.
Os dados que você envia são apagados assim que o relatório fica pronto, e na hora se a renderização falhar. As páginas e o PDF ficam num armazenamento à parte que apaga tudo em até dois dias, mesmo que o nosso próprio processo de exclusão falhe.
Busque o relatório dentro desse prazo: por webhook e depois um download com a sua chave de API, ou com um link assinado. Depois disso, a API responde que o prazo terminou. Excluir o relatório pela API encerra o prazo antes.
Os recursos que guardam dados ou os enviam para outro lugar ficam desligados neste modo: links abertos (os relatórios usam links assinados), compartilhamento por e-mail, tradução e resumos com IA, e formulários preenchidos pela metade. O título do relatório vem da sua requisição, ou do nome do modelo e da data, nunca dos dados.
Se o espaço de trabalho passar para um plano sem este modo, ele continua ligado até um proprietário desligá-lo. Ele limita o que guardamos; não muda o nosso papel: enquanto renderizamos um relatório, continuamos tratando os dados dele, como seu operador conforme o DPA.
18. Resposta a incidentes
Quando algo dá errado, seguimos cinco etapas:
- Conter o problema e preservar as evidências.
- Descobrir o alcance: quais espaços de trabalho, quais dados, desde quando.
- Trocar as chaves e os segredos que possam ter sido afetados.
- Avisar os clientes afetados em até 48 horas depois de tomarmos conhecimento de uma violação de dados pessoais, como o DPA (em inglês) estabelece, e as autoridades quando a lei exigir.
- Corrigir a causa e registrar o ocorrido.
19. A sua parte
A segurança é compartilhada. Do seu lado:
- Guarde as chaves de API num cofre de segredos, nunca no código nem no navegador, e use chaves de teste em desenvolvimento.
- Escolha a política de acesso certa para cada relatório: uma senha, uma data de validade, ou URLs assinadas para qualquer coisa sensível.
- Fixe versões de modelo em produção, para que uma publicação nunca mude um relatório que os seus sistemas enviam.
- Confira a assinatura de cada webhook antes de confiar nele.
- Remova os membros que saem da sua equipe e troque qualquer chave de API que eles possam ter visto.
- Não envie informações de saúde protegidas pela lei dos EUA: não assinamos um acordo de associado comercial da HIPAA.
20. Divulgação responsável
Se você encontrar uma vulnerabilidade, conte para nós. Escreva para hello@pressfox.io com o assunto "Relato de segurança", com detalhes suficientes para reproduzirmos. Confirmamos o recebimento em até 2 dias úteis. Não há recompensa em dinheiro; se você quiser, agradecemos pelo nome nesta página.
No escopo: pressfox.io, app.pressfox.io, api.pressfox.io, reports.pressfox.io, *.pressfox.app, a API e o servidor MCP.
Fora do escopo: a própria Paddle, o Cloudflare e o Google (relate a eles); negação de serviço; spam; engenharia social; ataques físicos; e dados de outros clientes.
Regras: teste só no seu próprio espaço de trabalho. Se chegar a dados de outra pessoa, pare, não os guarde e nos avise.
Porto seguro: não processamos nem denunciamos pesquisadores que agem de boa-fé dentro destas regras. Nossos contatos também estão publicados em /.well-known/security.txt (RFC 9116).
21. Certificações
Nenhuma ainda. A Pressfox não tem relatório SOC 2, nem certificado ISO 27001, nem acordo de associado comercial da HIPAA. Nossos provedores têm certificações próprias; elas são deles, não nossas, e não as reivindicamos.
22. O que ainda não temos, dito com clareza
- Ainda sem segundo fator no login.
- Sem CAPTCHA nos formulários públicos; limites de frequência e cadastros pendentes cuidam dos abusos hoje.
- Ainda sem cabeçalho Content-Security-Policy.
- Nenhum teste de intrusão externo concluído ainda; um está planejado antes do lançamento geral, e vamos publicar o resumo.
- Ainda sem página pública de status.
- Sem relatório SOC 2 e sem certificado ISO 27001.
- Ainda sem armazenamento dedicado, sem chaves de criptografia gerenciadas pelo cliente e sem armazenamento no seu próprio bucket. São opções do Enterprise que conversamos sob consulta.
- Nenhuma região além da UE. Outras regiões virão quando um cliente precisar, com armazenamento por região.
- Sem acordo de associado comercial da HIPAA e sem região dedicada à saúde.
- Ainda sem login único (SAML); só código por e-mail e Google.
- Localizada na UE, não soberana na UE: nossos provedores de hospedagem são empresas americanas com planos de controle globais, vinculadas por Cláusulas Contratuais Padrão.
23. Histórico de versões
| Data | Mudança |
|---|---|
| 16 de outubro de 2026 | Incluído: a verificação de documentos, uma página de verificação e uma linha de verificação nos PDFs, e a seção que a explica. |
| 16 de outubro de 2026 | Incluído: uma senha no próprio PDF, a partir do Standard. As propriedades de um PDF trazem só o título, o emissor e identificadores públicos, e a partir do Standard não citam a Pressfox. |
| 13 de outubro de 2026 | Incluído: a mesma proteção em todos os planos, dita primeiro; o modo sem retenção no Pro e no Enterprise (saiu da lista “O que ainda não temos”); o download do registro de auditoria e dois anos de histórico de auditoria no Pro e no Enterprise. Armazenamento dedicado, chaves gerenciadas pelo cliente e o seu próprio bucket aparecem como opções do Enterprise sob consulta. |
| 13 de outubro de 2026 | Backups e recuperação corrigidos: a recuperação para um ponto no tempo de cerca de quatro semanas substitui a descrição anterior de backups diários; o cronograma de exclusão informa por quanto tempo os backups guardam a chave de um espaço de trabalho excluído; uma restauração reaplica primeiro cada exclusão e cada revogação. |
| 10 de outubro de 2026 | A API agora tem limites de requisições por chave de API e por espaço de trabalho (saiu da lista “O que ainda não temos”); um endpoint de webhook desativado depois de 3 dias de falhas pode ser reativado no app, em vez de ser criado de novo. |
| 10 de outubro de 2026 | Reescrita: seções numeradas; novas seções sobre infraestrutura, isolamento dos espaços de trabalho, login e sessões, o plano de renderização, os dados que você envia, webhooks e a API, acesso da equipe, pagamentos, backups, a sua parte e divulgação responsável; a tabela de provedores trocada por um link para a página de suboperadores; backups guardados por 7 dias. |