Skip to content

Armazenamento de Dados no Android

Visão Geral

Este capítulo discute a importância de proteger dados sensíveis, como tokens de autenticação e informações privadas, vitais para a segurança móvel. Analisaremos as APIs do Android para armazenamento local de dados e compartilharemos práticas recomendadas.

Embora seja preferível limitar dados sensíveis no armazenamento local, ou evitá-los sempre que possível, casos de uso práticos frequentemente exigem o armazenamento de dados do usuário. Por exemplo, para melhorar a experiência do usuário, aplicativos armazenam em cache tokens de autenticação localmente, evitando a necessidade de inserção complexa de senha a cada inicialização do aplicativo. Aplicativos também podem precisar armazenar informações pessoalmente identificáveis (PII) e outros dados sensíveis.

Dados sensíveis podem se tornar vulneráveis se protegidos inadequadamente, potencialmente armazenados em vários locais, incluindo o dispositivo ou um cartão SD externo. É importante identificar as informações processadas pelo aplicativo móvel e classificar o que conta como dado sensível. Consulte a seção "Identificando Dados Sensíveis" no capítulo "Teste de Segurança de Aplicativos Móveis" para detalhes sobre classificação de dados. Consulte Dicas de Segurança para Armazenamento de Dados no guia do desenvolvedor Android para insights abrangentes.

Os riscos de divulgação de informações sensíveis incluem potencial descriptografia de informações, ataques de engenharia social (se PII for divulgada), sequestro de conta (se informações de sessão ou um token de autenticação forem divulgados) e exploração do aplicativo com opção de pagamento.

Além da proteção de dados, valide e sanitize dados de qualquer fonte de armazenamento. Isso inclui verificar tipos de dados corretos e implementar controles criptográficos, como HMACs, para integridade de dados.

O Android oferece vários métodos de armazenamento de dados, adaptados a usuários, desenvolvedores e aplicativos. Técnicas comuns de armazenamento persistente incluem:

  • Shared Preferences
  • SQLite Databases
  • Firebase Databases
  • Realm Databases
  • Armazenamento Interno
  • Armazenamento Externo
  • Keystore

Além disso, outras funções do Android que podem resultar em armazenamento de dados e devem ser testadas incluem:

  • Funções de Log
  • Backups do Android
  • Memória de Processos
  • Caches de Teclado
  • Capturas de Tela

Compreender cada função relevante de armazenamento de dados é crucial para executar os casos de teste apropriados. Esta visão geral fornece um breve esboço desses métodos de armazenamento de dados e direciona testadores para documentação relevante adicional.

Knowledge Articles

ID Name Platform
MASTG-KNOW-0026 Serviços de Terceiros Incorporados no App platform:android
MASTG-KNOW-0039 Bancos de dados Firebase em tempo real platform:android
MASTG-KNOW-0047 Armazenamento de Chaves Cryptographic platform:android
MASTG-KNOW-0053 Capturas de tela platform:android
MASTG-KNOW-0055 Cache do Teclado platform:android
MASTG-KNOW-0043 Android KeyStore platform:android
MASTG-KNOW-0050 Backups platform:android
MASTG-KNOW-0042 Armazenamento Externo platform:android
MASTG-KNOW-0045 Importação Segura de Chaves para o Keystore platform:android
MASTG-KNOW-0040 Realm Databases platform:android
MASTG-KNOW-0046 BouncyCastle KeyStore platform:android
MASTG-KNOW-0052 Componentes de Interface do Usuário platform:android
MASTG-KNOW-0037 Banco de Dados SQLite platform:android
MASTG-KNOW-0051 Memória de Processo platform:android
MASTG-KNOW-0038 None platform:android
MASTG-KNOW-0036 Preferências Compartilhadas platform:android
MASTG-KNOW-0041 Armazenamento Interno platform:android
MASTG-KNOW-0048 KeyChain platform:android
MASTG-KNOW-0044 Key Attestation platform:android
MASTG-KNOW-0054 Notificações de Aplicativo platform:android
MASTG-KNOW-0049 Registros platform:android