IndexedDB (Riscos)
O IndexedDB é um banco de dados transacional completo integrado ao navegador. Ele é projetado para armazenar volumes significativos de dados estruturados e arquivos (Blobs).
Quando usamos?
É útil para aplicações que precisam funcionar offline ou que lidam com grandes quantidades de dados que não cabem no LocalStorage (como o cache de imagens de exames no Laudário).
Riscos de Segurança
- Acesso via Script: Assim como o LocalStorage, o IndexedDB é acessível via JavaScript pela mesma origem (SOP).
- Persistência de Longo Prazo: Dados no IndexedDB não expiram sozinhos. Se dados sensíveis forem salvos lá, eles permanecerão no disco do usuário até serem explicitamente deletados.
- Vazamento de Dados em Computadores Compartilhados: Se o usuário não limpar os dados ou não fizer logout corretamente, o próximo usuário do computador pode ter acesso aos dados armazenados.
Como fazer vs Como não fazer
✅ Como fazer
- Utilize o IndexedDB apenas quando o LocalStorage não for suficiente em termos de performance ou tamanho.
- Implemente uma rotina rigorosa de limpeza de dados no momento do Logout.
- Considere criptografar dados sensíveis antes de salvá-los no IndexedDB (embora a chave de criptografia ainda precise ser gerenciada com cuidado).
❌ Como não fazer
- Não armazene dados de saúde (laudos, diagnósticos) no IndexedDB sem uma justificativa técnica clara e uma estratégia de limpeza automática.
- Não confie que o navegador limpará o banco de dados sozinho quando a sessão expirar; o IndexedDB é persistente por natureza.
- Não utilize o IndexedDB para armazenar tokens de sessão ou credenciais.