Segurança
Este site foi desenhado para expor trabalho técnico sem acrescentar superfície desnecessária. Aqui fica o que está em vigor, para quem quiser verificar.
Modelo de ameaça
A arquitetura — estática, sem contas nem sessões, com o pouco que precisa mesmo de servidor (honeypot, verificador de passwords) isolado num Worker à parte — está descrita em Este Site. Para o modelo de ameaça, o que importa é a consequência: a superfície de ataque fica mínima. O que interessa proteger é a integridade (não servir código adulterado) e a privacidade de quem visita — é aí que as camadas abaixo se concentram.
Isto é o modelo — o que tenta mesmo entrar, ao vivo (honeypot e o que a Cloudflare trava na zona), está no hub, em «Este site, em números», com detalhe em Honeypot e Cloudflare.
A segurança aqui é uma faceta do projeto que serve este site — o modelo de ameaça e as decisões de arquitetura por trás dela estão contados na página do projeto.
Cabeçalhos e porquê
O que é enviado em cada resposta, e a razão de ser:
| Content-Security-Policy | script-src 'self' e style-src 'self', sem 'unsafe-inline': zero JavaScript ou CSS inline no site inteiro, só código do próprio domínio executa. JavaScript injetado não executa. É uma das defesas centrais contra XSS. |
|---|---|
| Strict-Transport-Security | Força HTTPS no browser durante 2 anos, mesmo que alguém tente rebaixar para HTTP. |
| X-Frame-Options: DENY | Impede que o site seja embebido noutro (anti-clickjacking), a par de frame-ancestors na CSP — para browsers antigos que não suportem a diretiva. |
| X-Content-Type-Options: nosniff | Impede o browser de adivinhar o tipo de um ficheiro e executá-lo como algo que não é. |
| Referrer-Policy | Não vaza o caminho completo desta página para sites externos ao seguir uma ligação. |
| Permissions-Policy | Desliga APIs de browser que o site não usa (câmara, micro, geolocalização, pagamentos, USB). |
| Cross-Origin-Opener-Policy | Isola o contexto de navegação (window/tab) de outras origens — impede que uma janela de outro site controle esta. |
| Cross-Origin-Embedder-Policy | Só carrega recursos de outras origens que autorizem explicitamente (CORP/CORS) — parte do isolamento cross-origin, a par de COOP. |
| Cross-Origin-Resource-Policy | Impede que outros sites carreguem os recursos deste directamente — completa o trio cross-origin, os mesmos nove cabeçalhos exigidos no contrato das Provas. |
Privacidade e dados
Não há cookies, analytics nem scripts de terceiros. As ferramentas client-side (subnets, hashes, encoder, passwords, cabeçalhos de email, EXIF, análise de CSP, laboratório de passkeys) processam tudo no teu browser — nenhum dado sai da máquina. As duas ferramentas que falam com o Worker (verificador de passwords, espelho) dizem-no explicitamente e estão identificadas com um badge no índice de ferramentas. A Cloudflare, como infraestrutura que serve o site, regista por omissão os logs de conexão padrão (IP, User-Agent) de qualquer pedido — não é algo que este site adicione, mas não o escondo: é a mesma exposição de qualquer site atrás de um CDN.
Cadeia de entrega
O código que chega ao teu browser passa por uma cadeia de verificações a cada push: as dependências são analisadas por vulnerabilidades conhecidas e por pacotes maliciosos, os segredos são travados antes de entrarem, os scripts do lado do cliente passam por SAST, e os próprios workflows são auditados. As GitHub Actions estão pinadas por digest SHA e as dependências mantidas pelo Renovate. O detalhe — que ferramenta apanha o quê — está nas Provas.
Como reportar
Encontraste algo? A política de contacto para divulgação responsável está publicada em formato legível por máquinas:
Transparência verificável
Nada aqui é para acreditares — é para verificares. Reuni as provas num só sítio: o hash do último commit, o contrato de cabeçalhos (CSP incluída) e os workflows de CI, por push, cron ou tag.