← Voltar para o Fechou!

Segurança do Fechou!

Varredura de dez classes de vulnerabilidade sobre todo o código, feita por ferramenta. Abaixo, o que continua aberto e o que já foi fechado.

Sobre a expectativa de um vigia automático: o Fechou! é um site estático mais o Firebase. Não existe servidor próprio onde um programa possa vigiar tráfego e bloquear ataque em tempo real. O que protege um produto assim é blindagem em camadas, verificável, e é o que está listado aqui.

Em aberto

0Crítica
1Alta
0Média
0Baixa
3Informação
AltaAbuso
Sem verificação de aplicativo legítimo Nada impede que alguém chame o seu banco de fora do produto, usando a chave pública. nenhuma chamada de App Check Risco: Um roteiro automatizado pode criar milhares de contas e encher o banco, elevando custo e sujando a base. Correção: Ativar o Firebase App Check com reCAPTCHA, que é gratuito e não exige plano pago.
InformaçãoBanco
Coleção com leitura pública A coleção de orçamentos compartilhados por link é legível sem login, por desenho. match /publicos/{token} Risco: Quem descobrir um endereço vê o orçamento. O endereço tem 22 caracteres sorteados, o que torna adivinhação inviável. Correção: Já restrito: a escrita pública só muda o status, uma vez, saindo de enviado.
InformaçãoDados locais
1 itens guardados no navegador O que o produto guarda fora da sessão. fechou-lateral Risco: Nenhum contém dado pessoal, senha ou identificador de sessão. São preferências de tela. Correção: Manter assim: identidade fica com o Firebase, não com o produto.
InformaçãoSegredos
Chave de API do Firebase visível no código Ela é pública por natureza e não concede acesso a nada sozinha. dados.js Risco: Quem protege os dados são as regras de segurança, não o sigilo da chave. Correção: Nenhuma ação. Confundir isso com vazamento é erro comum.

Já fechado

Cadeia de fornecimentoBibliotecas de PDF trazidas para dentro O jsPDF e o plugin de tabela vinham de servidor de terceiro a cada carregamento, sem conferência. Desde a 0.39 vivem em vendor/, e nenhum código externo executa no produto.
Injeção de conteúdoLogo conferida antes de virar imagem O campo é gravado pelo usuário e reinserido em nove lugares, um deles a página pública. Só passa data:image/ em base64, com teto de peso, e a regra do banco recusa o resto antes de gravar.
Injeção de conteúdo124 pontos passam por escape Identificadores, cores e textos que entravam no HTML sem tratamento. A varredura não encontra mais nenhum.
CabeçalhosSete cabeçalhos de segurança Política de conteúdo listando as origens permitidas, proibição de ser embutido em outro site, conexão cifrada obrigatória por um ano, e mais quatro.
BancoRegras endurecidas Isolamento por conta, plano protegido, contador que não retrocede, teto de tamanho, logo validada, escrita pública limitada a dois campos, e negação de todo caminho não declarado.
AcessoEspera crescente a cada erro de senha Terceiro erro espera 5 segundos, quinto espera 1 minuto, sétimo espera 5 minutos.
AcessoSessão encerra sozinha Quatro horas sem uso, com aviso antes. Protege o caso real: sistema aberto no computador da obra.
GolpeRecusa rodar dentro de outro site Se o Fechou! for carregado num quadro em página falsa, ele para e mostra o endereço oficial.
AutenticaçãoSenha mínima de oito com mistura obrigatória E recusa as doze senhas mais usadas no Brasil.
NavegaçãoQuatro aberturas de aba isoladas A página de destino não consegue trocar o endereço da sua.

Gerada em 31 de julho de 2026, sobre a versão 0.53, pela ferramenta docs/seguranca.py.
Para a auditoria geral de código, veja o relatório de auditoria.