Pular para o conteúdo
← TODOS OS PROJETOS
Leitura do resultadouma rede de supermercados · ago/2026 — hojeRisco evitado

Quinze links de análise confidencial circulando no WhatsApp, sem login e sem volta

Cada análise virava um link público colado numa conversa. Quem recebeu uma vez tem acesso para sempre, o link não é rastreável, não é cancelável — e ninguém conseguia responder quem abriu o quê.

31
peças do acervo, contadas uma a uma — não estimadas
15
links públicos sem controle de acesso, dos quais 9 com dado que não podia circular
0
registros de acesso: era impossível responder quem abriu o plano de caixa

DIAGNÓSTICO OPERACIONAL

Como era antes

Toda análise que eu entregava nascia como uma página publicada na internet ou um arquivo solto no repositório. A distribuição era por link colado no WhatsApp.

Isso significa, na prática: sem login, sem perfil, sem revogação. Quem recebeu o link uma vez tem acesso para sempre. Link vazado não é rastreável nem cancelável. E colaboradores com acesso à ferramenta podiam alcançar peças que não deviam circular.

Contei o acervo em vez de estimar: 31 peças. Dessas, 15 estavam publicadas como link aberto, e 9 carregavam dado que não podia circular — plano de caixa, margem abaixo do cadastro, grade de alertas, pesquisa de preço. Outras quatro, pareceres contratuais, existiam só no repositório, visíveis a qualquer pessoa com uma cópia dele.

E o número que resume tudo: zero registros de acesso. A pergunta “quem abriu o plano de caixa?” não tinha resposta possível.

ENGENHARIA E ARQUITETURA

O que eu fiz

Um acervo atrás de login, com permissão por pessoa e por perfil, e trilha de quem abriu o quê.

A regra de ouro é a negação por padrão: peça nova nasce invisível até alguém liberar explicitamente. O contrário — nascer visível e ir restringindo — é como se constrói exatamente o vazamento que o projeto veio fechar.

E uma delimitação que evitou um projeto infinito: as peças são fotografias datadas, e são exibidas como tal. Transformar cada análise em painel vivo era a tentação óbvia, e teria trocado um problema resolvido por um projeto sem fim.

RESULTADOS MENSURÁVEIS

O que mudou

O acervo saiu do link público e passou a ter dono, prazo e registro. A pergunta “quem abriu isso?” passou a ter resposta.

O que não posso chamar de resolvido: migrar não fecha a exposição sozinho. Os links antigos continuam no ar até serem despublicados um a um, à mão. Enquanto esse passo não acontecer, o número que importa — quinze links abertos — não se move, e o projeto não entregou o que prometeu. Isso está escrito assim, com dono e prazo, e não como “fase final”.

DINÂMICA DE OPERAÇÃO

Uma coisa que eu descobri tarde, e você descobriria também

Eu quase recriei o problema dentro da solução.

Na plataforma onde o portal roda, todo arquivo na pasta pública é servido antes de o controle de acesso rodar. Um HTML colocado ali fica acessível sem login, mesmo com o portão de autenticação na frente do resto do sistema. Seria o mesmo vazamento, em outro endereço, com a falsa sensação de estar resolvido.

A correção é simples quando você sabe: o conteúdo protegido não mora em lugar que o servidor sirva sozinho — ele é lido de dentro da função que já checou quem é a pessoa. O que não é simples é descobrir isso antes, e não depois de alguém encontrar a porta.

A lição maior vale para qualquer sistema com login: teste a porta dos fundos antes de confiar na porta da frente. Autenticação que só existe no caminho que você imaginou não é autenticação.

O QUE EU APRENDI

Na Vercel, tudo que está na pasta public é servido antes do middleware rodar. Um HTML colocado ali fica acessível sem login mesmo com o portão de autenticação na frente do resto do app. Era exatamente o problema que o projeto existia para resolver, recriado em outro endereço — e eu só não repeti porque testei a porta dos fundos antes de confiar na porta da frente.

OUTROS PROJETOS DA MESMA DOR

PRÓXIMO PASSO

Tem um problema parecido na sua operação?