Arquivos públicos e a ilusão de sigilo
arquivo técnico
Tudo que o navegador carrega é, por definição, público.
Ainda assim, muitos projetos tratam esses recursos
como se estivessem escondidos.
Diretórios previsíveis, nomes óbvios,
nenhuma separação entre interface e lógica.
Não é uma falha sofisticada.
É descuido acumulado.
— willnix
Infraestrutura não falha, pessoas sim
observações recorrentes
Sempre que um sistema cai, a narrativa tenta culpar
hardware, software ou ataques externos.
Na prática, quase sempre há uma decisão humana
mal documentada no meio do caminho.
Credenciais reutilizadas.
Ambientes de teste expostos.
Exceções temporárias que se tornam permanentes.
O problema não é técnico.
É organizacional.
— willnix
Sobre logs que ninguém lê
anotações técnicas
Sistemas modernos produzem volumes absurdos de logs.
O problema não é falta de informação, é excesso.
Já vi ambientes onde alertas críticos coexistiam
com mensagens irrelevantes no mesmo fluxo.
Tudo acaba sendo ignorado.
Auditorias costumam assumir que alguém está olhando.
Normalmente, ninguém está.
O erro não está na tecnologia,
mas na crença de que registro implica controle.
— willnix
Quando a senha está no JavaScript
publicado anonimamente · análise técnica
Às vezes, não é preciso força bruta, exploits ou engenharia social.
Às vezes, o sistema simplesmente entrega tudo.
Sites estáticos frequentemente usam JavaScript para simular autenticação.
O problema começa quando a validação inteira acontece no cliente.
Observação inicial
Qualquer recurso público pode ser requisitado diretamente.
HTML, CSS e JavaScript não são protegidos por formulários.
$ curl https://link-do-site.com
A resposta é apenas um HTML comum. Nada inesperado.
O detalhe está no final do documento:
<script src="js/auth.js"></script>
O erro conceitual
Se o JavaScript é carregado pelo navegador,
então ele também é acessível diretamente.
$ curl https://link-do-site.com/js/auth.js
O conteúdo revela exatamente como a validação funciona.
Não há servidor, não há hash, não há verificação real.
if (
email === "email" &&
password === "senha"
)
Conclusão
Não houve quebra de criptografia.
Não houve invasão de infraestrutura.
Apenas leitura de um arquivo público.
Autenticação no front-end não é autenticação.
É apenas encenação. E cai entre nós, quem deixa isso acontecer é muito burro!
Porém pode acontecer se foi feito pra um teste e esqueceram de modificar isso
na hora da produção. Se duvidar, deve ter isso até mesmo em sites governamentais.
— willnix
O mito do acesso restrito
nota curta
Interfaces de login tranquilizam mais do que protegem.
Elas comunicam autoridade, não segurança.
A maioria das pessoas para ali.
Sistemas verdadeiramente sensíveis
não anunciam que são sensíveis.
O aviso “acesso restrito” costuma ser
apenas um pedido educado.
— willnix