Segurança

Nosso modelo de segurança em uma frase: não há nada em um servidor para atacar. Tudo abaixo é verificável a partir das suas DevTools.

Arquitetura

O Abundera QR é uma aplicação de página única estática servida a partir do Cloudflare Pages. Não há servidor de aplicação, banco de dados, contas de usuário, autenticação, endpoints de API e nenhum caminho de código de backend que processe dados do usuário. Toda operação de geração, codificação, leitura e renderização de QR é executada inteiramente dentro do seu navegador.

Modelo de ameaça

Como não coletamos, armazenamos nem transmitimos dados de usuário, as ameaças mais comuns em aplicações web — roubo de credenciais, violação de banco de dados, sequestro de sessão, injeção no lado do servidor — não se aplicam. A superfície de ataque restante é o bundle de assets estáticos (HTML, CSS, JavaScript) servido de nossa origem. Projetamos assumindo:

Política de Segurança de Conteúdo — por diretiva

A política atual (verifique nos cabeçalhos de resposta de qualquer requisição):

Content-Security-Policy:
  default-src 'self';
  script-src 'self' 'wasm-unsafe-eval';
  worker-src 'self' blob:;
  style-src 'self' 'unsafe-inline';
  font-src 'self';
  img-src 'self' data: blob: https:;
  connect-src 'self' https:;
  frame-ancestors 'none';
  base-uri 'self';
  form-action 'self'

O que cada diretiva nos permite fazer e onde ela representa um compromisso:

Políticas CSP diferentes se aplicam a /bio/* (img-src relaxado para avatares fornecidos pelo usuário) e /embed/* (frame-ancestors relaxado para incorporação intencional). Ambas estão documentadas em site/_headers.

Cabeçalhos de transporte e enquadramento

Service worker

Nosso service worker (site/sw.js) armazena em cache apenas assets da mesma origem. O handler de fetch rejeita explicitamente requisições de origem cruzada e métodos não-GET — você pode ler a lógica no GitHub. Escritas em cache são envolvidas em event.waitUntil() para que não possam ser descartadas no meio de uma navegação.

Sanitização de entradas

Todo caminho de renderização que aceita entrada do usuário a trata como texto não confiável:

Busca de imagens de origem cruzada

Quando um usuário cola uma URL https: como foto de vCard ou logotipo, o navegador a busca sujeito ao CORS e à lista de permissões img-src do nosso CSP. A imagem é renderizada em um canvas. Ela nunca se torna DOM ativo, nunca é executada como código e nunca chega à nossa origem — a busca é navegador → imagem remota, e o resultado é pintado no lado do cliente. Um atacante que controla uma URL de imagem remota pode rastrear que a URL foi carregada (uma linha de log em seu próprio servidor), mas não consegue exfiltrar nada da nossa página.

Integridade de Sub-Recursos (SRI)

Todo JavaScript e CSS que entregamos é da mesma origem. Não carregamos scripts ou folhas de estilo de terceiros, portanto os hashes SRI não são aplicáveis. Se algum dia carregarmos um asset de terceiros, incluiremos um atributo integrity SRI nele e documentaremos o processo de atualização de hash nesta página.

Reportar uma vulnerabilidade

Se você descobrir um problema de segurança afetando o Abundera QR — seja no nosso código, nossa implantação ou em uma dependência que entregamos — por favor, reporte-o de forma privada para security@abundera.ai. Buscamos fazer a triagem em 72 horas. Você também pode nos contatar através dos detalhes de contato no nosso arquivo /.well-known/security.txt.

Sem programa de bug bounty (ainda)

Atualmente não oferecemos recompensas pagas, mas cada relatório válido confirmado recebe crédito no changelog e nosso agradecimento público.

Verifique qualquer uma das afirmações acima

Cada afirmação nesta página é falsificável a partir das DevTools do seu navegador sem precisar confiar em nós:

Contato

Divulgações de segurança: security@abundera.ai

Última atualização: 2026-04-19. Próxima revisão: 2026-07-19.