Segurança de Aplicativos Android

Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba grátis conteúdos Android sem precedentes! Você receberá um email de confirmação. Somente depois de confirma-lo é que eu poderei lhe enviar os conteúdos semanais exclusivos. Os artigos em PDF são entregues somente para os inscritos na lista.

Email inválido.
Blog /Livros /Segurança de Aplicativos Android

Segurança de Aplicativos Android

Vinícius Thiengo
(4408) (2)
Go-ahead
"O método consciente de tentativa e erro é mais bem-sucedido que o planejamento de um gênio isolado."
Peter Skillman
Prototipagem Android
Capa do curso Prototipagem Profissional de Aplicativos
TítuloAndroid: Prototipagem Profissional de Aplicativos
CategoriasAndroid, Design, Protótipo
AutorVinícius Thiengo
Vídeo aulas186
Tempo15 horas
ExercíciosSim
CertificadoSim
Acessar Curso
Quer aprender a programar para Android? Acesse abaixo o curso gratuito no Blog.
Lendo
TítuloManual de DevOps: como obter agilidade, confiabilidade e segurança em organizações tecnológicas
CategoriaEngenharia de Software
Autor(es)Gene Kim, Jez Humble, John Willis, Patrick Debois
EditoraAlta Books
Edição
Ano2018
Páginas464
Conteúdo Exclusivo
Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba gratuitamente conteúdos Android sem precedentes!
Email inválido
Capa do livro Segurança de Aplicativos Android
Título
Segurança de Aplicativos Android
Categoria
Android
Autor(es)
Jeff Six
Editora
Novatec
Ano
2012
Edição
Páginas
140

Vamos lá, o livro Segurança de Aplicativos Android de Jeff Six é um baita livro, dessa vez não fiquei surpreso pela qualidade, pois o autor é engenheiro de segurança em grandes instituições financeiras dos Estados Unidos além de ter trabalhado na “pouco conhecida” National Security Agency (NSA), sempre com segurança. Enfim, nada do que falei até agora você não conseguiria encontrar na área “Sobre o autor” do livro. O tipo do livro é bem especifico apesar de o próprio autor deixar claro que o livro apenas abre as portas do mundo de segurança de aplicativos Android, que ele deixa bem claro durante o livro que é muito maior do que o apresentado, mas mesmo o autor falando que o livro não pode ser adotado como material único de referência quando o assunto é segurança de aplicativos Android o livro ao meu ver é bem completo para nós desenvolvedores que devemos saber pelo menos  o básico sobre segurança no momento de implementar nossos aplicativos.

Existia algumas coisas de segurança de aplicativos Android que eu já manjava um pouco, permissões no manifest, por exemplo. Porém se você me perguntasse coisas mais robustas além das permissões eu muito provavelmente não saberia ir muito longe. Por exemplo, sabe aquelas aplicações que nós temos de dar a ela o acesso de usuário root para conseguir obter a funcionalidade prometida? Muito comum em aplicações de screencast (filmagem da tela do dispositivo). Esse acesso de root que o usuário (eu faço isso às vezes, compulsório, mas tenho de fazer) da a aplicação de screencast é nada mais nada menos que dizer ao aplicativo “faça o que bem entender com meu dispositivo”. Literalmente é isso que acontece. Como abordado pelo autor no livro, o Linux (o Android é construído em cima do Linux) identifica cada aplicação com um id de usuário único, sendo assim tudo que a aplicação tem ou cria, que não esteja no SDCard do dispositivo somente pode ser acessado por ela (ou por outras aplicações que têm o mesmo id de usuário ou por meio de um ContentProvider), porém se a aplicação estiver com acesso root ela pode acessar qualquer coisa e lugar do sistema, mesmo o id de usuário sendo diferente, e é ai que entra o perigo, imagina você salvando os dados de login dos usuários de seu sistema em um SQLite e sem criptografia... uma aplicação maliciosa poderia facilmente acessar os SQLites de todas as aplicações do dispositivo do usuário e então envia-los para um servidor Web, isso tudo no background e você imaginando que aquela simples aplicação de screencast nada poderia causar de dano... tendo em mente que as senhas e logins tendem a ser os mesmos em outras plataformas! O autor deixa claro isso tudo no livro (essa do usuário root foi novidade para mim). O autor de “lambuja” da uma aula sobre criptografia de dados no capítulo 5, fala sobre chave simétrica, chave assimétrica (pública e privada), hash, códigos de criptografia nativos do Android, porque não salvar a chave de encriptação no dispositivo e por ai vai. Alias o autor mostra que o mais correto é trabalharmos com chave derivada. Na página 104, capítulo 5 ainda, tem um código que acredito já valer o preço do livro, depois de um caminhão de explicação sobre criptografia, encriptação, chaves e chaves derivadas, SHA 256 e AES com CBC o autor mostra um código em que é fornecida uma chave e então é criada uma chave derivada para então encriptar os dados e depois somente para confirmar o autor decripta os dados para provar que o conteúdo original é retornado... esse é o script para desenvolvedores que inevitavelmente precisam guardar dados sensíveis do usuário no dispositivo. O autor mostra que esse tipo de script de criptografia é a arma contra o acesso root ao dispositivo.

Inacreditavelmente o autor fala também sobre SQL –injection, pode acreditar, esse assunto ainda está em voga até mesmo no desenvolvimento mobile Android, mas na verdade o que o autor aborda nesse capítulo (6) é a importância de validarmos todos os dados de entrada que vêm de nossas aplicações para o servidor Web, ele mostra que uma das armas é utilizar scripts de montagem de SQL que trabalham com métodos de parametrização de argumento, é nada mais nada menos que aqueles métodos em que nós montamos a SQL (comandos) de uma lado com as famosas “?” e então colocamos os dados enviados como sendo o outro parâmetro de entrada do método, segundo o autor, dessa forma pode vir qualquer coisa como dado que a aplicação se encarregará de tratar tais dados como apenas dados a serem gravados ignorando então os scripts maliciosos que contém apóstrofos, caracteres de comentário em SQL e por ai vai.

Mas o assunto muito necessário que encontrei no livro foi de “Principio do Privilégio Mínimo”, ou seja, somente devemos dar acesso ao que o usuário realmente deve acessar, somente devemos gravar dados (no SQLite e outras entidades do dispositivo) que realmente iremos utilizar, e por ai vai. Eu mesmo depois de ler esse tópico reformulei a base de dados local de uma aplicativo que administro, pois percebi que guardava um caminhão de dados do usuário que na verdade não os utilizava para nada, coisas que na fase de projeto passam batido e agente acaba nem percebendo que pode virar um grande problema mais para frente.

Então é isso, o livro é de um baita aprendizado, é bem pequeno, apenas 140 páginas, e sem sombra de dúvidas aborda mais que o necessário do que programadores que não têm foco em segurança (até porque não da para abraçar o mundo e aplicativos mobile é sim um mundo muito grande) precisam saber. Primeiro livro que li desse autor e a foi fenomenal a experiência, achei a explicação muito boa, bem direta, mas sem pular o necessário. Somente tenho uma queixa que é quando ele fala sobre segurança na transmissão dos dados entre APP e servidor Web, show de bola ele mostrar que podemos travar a comunicação apenas com um servidor e vice-versa, porém apesar de ele mostrar o script de validação de servidor e cia no lado cliente, APP Android, ele simplesmente pulou a parte de mostrar como fazer isso no lado servidor, servidor Web, falando que não faz parte do escopo do livro e sem dar ao menos uma referência em uma determinada linguagem para os leitores poderem ir buscar a complementação do script ou apenas aprender sobre como implementar o lado servidor desse script de validação. Achei que pelo menos uma referência seria de grande ajuda. Mas mesmo assim não deixarei de dar cinco estrelas, pois pelo tamanho do livro e pelo excelente conteúdo abordado com maestria porque quem entende do assunto (NSA, lembra?).

Vlw.

Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba grátis conteúdos Android sem precedentes!
Email inválido

Relacionado

Android CookbookAndroid CookbookLivros
Padrões de Projeto Para o AndroidPadrões de Projeto Para o AndroidLivros
Construindo Aplicativos Android com HTML, CSS e JavaScriptConstruindo Aplicativos Android com HTML, CSS e JavaScriptLivros
AWS Para DesenvolvedoresAWS Para DesenvolvedoresLivros

Compartilhar

Comentários Facebook

Comentários Blog (2)

Para código / script, coloque entre [code] e [/code] para receber marcação especifica.
Forneça seu nome válido.
Forneça seu email válido.
Forneça o comentário.
Enviando, aguarde...
Luis Castro (1) (0)
11/10/2020
Fala ae Thiengo blz ?Como sempre , Ótimo post cara esta de parabéns . Estou criando uma aplicação android pessoal , qual seria a melhor forma de enviar dados de cartão de crédito de forma segura para o server , teria alguma dica ? já chegou a criar algo desse tipo? valeu man Sucesso sempre .
Responder
Vinícius Thiengo (0) (0)
16/10/2020
Luis, tudo bem aqui.

Neste caso, para enviar dados de cartões de crédito ao backend e não correr o risco de ser banido pelas operadoras de cartões de crédito (Visa, MasterCard, ...).

Para isso você precisa se enquadrar nas exigências e certificações do PCI-DSS: https://www.pcisecuritystandards.org/

Mas mesmo que você esteja com toda essa disposição, de encarar um PCI-DSS...

... mesmo assim eu primeiro recomendo que você utilize uma API de pagamentos própria para aplicativos Android.

A Stripe tem uma, recém lançada no Brasil: https://stripe.dev/stripe-android/stripe/

A outra boa opção é utilizar um Checkout Transparente Web adaptado para o Android, como faço em:

-> Checkout Transparente da Web no Android: https://www.thiengo.com.br/checkout-transparente-da-web-no-android

Luis, porém fique ciente que se o seu aplicativo estiver comercializando soluções digitais, como moedas em um game.

Então é obrigatório utilizar algum dos sistemas de pagamento do Google Android.

Sistemas como o In-App Billing: https://www.thiengo.com.br/vendendo-produtos-e-inscricoes-com-google-in-app-billing-no-android

É isso.

Surgindo mais dúvidas, pode enviar.

E não deixe de entrar da Área de Membros do Blog: https://membros.thiengo.com.br/

Abraço.
Responder