Logo do Venturus
Dicas de segurança para desenvolvedor Android
  • 23 de maio de 2023
  • Blog

Dicas de segurança para desenvolvedor Android

Olá, pessoal, neste artigo vamos falar um pouco sobre segurança no Android! Em um mundo cada vez mais conectado, o tema segurança vem ganhando destaque no mundo tecnológico e no ambiente Android não é diferente.

A cada versão nova do sistema operacional lançada pela Google, novas funcionalidades de segurança são implementadas, adicionando funcionalidades e transparência ao usuário e modificando a forma como os desenvolvedores devem lidar em seus códigos.

Neste artigo, vamos discutir boas práticas recomendadas aos desenvolvedores em novas versões do Android!

 

Por que segurança importa ao falar do sistema operacional Android?

 

Android domina o mundo!

Em dados de 2023, as versões do SO Android ocupam 71% do mercado de sistemas operacionais de smartphones no mundo. No Brasil, este número chega a mais de 84%!

 

Mundo conectado

Dados de março de 2023 mostram que existem 6.84 bi de smartphones no mundo! Em perspectiva (sem levar em conta que pessoas podem ter 2 celulares), isso equivale a 85% da população mundial.

 

Mil e uma funcionalidades

Os celulares, concebidos para receber e realizar ligações, hoje fazem muito mais que isso e significam muito mais a vida dos usuários!

Com tudo isso em mente, já conseguimos ter uma boa noção de como a segurança tem se tornado um tema central no ambiente de desenvolvimento Mobile.

 

Vulnerabilidades

A segurança no Android é uma responsabilidade compartilhada entre desenvolvedores, provedores de serviços e usuários finais! Caso o tema não tenha a devida atenção, pode causar vulnerabilidades aos nossos smartphones.

Essas vulnerabilidades podem ser:

  • Não intencionais: más práticas de programação, falhas e brechas de desenvolvimento etc.
  • Intencionais: aplicações maliciosas ou aplicações escondidas em apps legítimos, acessos a permissões privadas etc.

Vulnerabilidades podem levar aos seguintes problemas ao usuário final:

  • Violação da privacidade do usuário;
  • Degradação de performance do aparelho;
  • Desgaste de bateria;
  • Baixa satisfação dos usuários;
  • Malwares, vírus, ataques adware, entre outros.

Por isso, é muito importante adotarmos as melhores práticas, tanto do lado do desenvolvedor, tanto do lado do usuário.

 

6 práticas recomendadas aos desenvolvedores

Vamos citar algumas dicas simples de segurança que os desenvolvedores podem adotar em seus projetos. Para mais dicas, vocês podem acessar a página de melhores práticas do Android Developers.

 

1.    Aplique comunicação segura entre aplicativos

Quando seu aplicativo precisar trocar dados com outros aplicativos:

  • Utilize intents implícitos com um seletor de aplicativos;
  • Utilize permissões baseadas em assinatura ao compartilhar dados entre dois apps que você controla ou possui;
  • Desabilite o acesso externo aos ContentProviders do seu app com a flag exported.

Abaixo, podemos ver alguns exemplos de código práticos das dicas acima:

Pedaço de código ilustrando o uso de intent implícita com uso de seletor de aplicativos

Uso de intent implícita com uso de seletor de aplicativos

 

Pedaço de código com acesso ao ContentProviders

Não permita acesso externo aos ContentProviders do seu app, exceto se necessário

 

2.    Aplique medidas de segurança de rede

Se o seu aplicativo precisa se comunicar com um servidor da Web, garanta que o servidor tenha um certificado emitido por autoridades de certificação conhecidas e confiáveis e utilize solicitações HTTPS.

Se o seu app usa certificados de autenticação novos ou personalizados, você pode (e deve) declarar as configurações de segurança de rede em um arquivo de configuração, permitindo configurar seu aplicativo sem mudanças de código!

Para mais informações sobre configuração de segurança de rede personalizadas, vocês podem checar este link do Android Developers.

 

3.    Armazene dados baseado em seu caso de uso

O Android possui diversas opções de armazenamento de dados dos aplicativos (cinco, na verdade) e é importante sabermos das necessidades específicas de nossos dados e apps para escolher a melhor solução.

Algumas perguntas podem ajudá-los a decidir pelo tipo de armazenamento:

  • Quanto espaço seus dados exigem?
  • Qual é o nível de confiabilidade do acesso aos dados?
  • Que tipo de dados você precisa armazenar?
  • Os dados precisam ser particulares do app?

Com estas perguntas respondidas, podemos entender melhor como devemos armazenar os dados em nossos aplicativos. Para mais informações, recomendamos checar a tabela de características de armazenamento no Android Developers.

 

4.    Armazene apenas dados não confidencias em arquivos de cache

Para prover um acesso mais rápido aos arquivos não-sensíveis do nosso app, podemos armazená-los em arquivos de cache. O problema é que qualquer aplicativo destinado ao Android 10 ou inferior (grande parte do mercado) com acesso a WRITE_EXTERNAL_STORAGE poderá  acessar suas informações. Portanto, tome cuidado!

 

5.    Mantenha dependências e serviços atualizados

Uma prática simples, mas muito negligenciada é manter as dependências do seu app atualizadas para conter as mais novas mudanças em bibliotecas de terceiros. Quem garante que alguma das atualizações não corrigiu um problema grave de segurança?

O próprio Gradle no Android Studio já nos informa bibliotecas que possuem versões mais recentes. Também podemos utilizar ferramentas de análise de dependências para isso!

 

6.    Peça credenciais antes de mostrar informações sensíveis

Antes de mostrar informações sensíveis do usuário, sempre peça um PIN/senha/padrão ou credencial biométrica, como reconhecimento facial ou impressão digital. Isso garante maior segurança e privacidade ao usuário, bem como uma maior satisfação ao utilizar os aplicativos.

 

Concluindo

Existem muitas outras dicas e recomendações aos desenvolvedores que poderíamos adicionar aqui, mas, o essencial é se manter sempre atualizado sobre as novidades e melhores práticas no desenvolvimento.

Espero que vocês tenham gostado de nossas dicas e, para quem quiser se informar melhor, deixamos alguns links úteis tanto aos usuários quanto aos desenvolvedores:

 

Este texto foi escrito com a ajuda do nosso Head de Mobile, Marcos Scarpim!