• Nenhum resultado encontrado

Desenvolvimento Seguro de Aplicações para Android. Ana Cláudia Costa

N/A
N/A
Protected

Academic year: 2021

Share "Desenvolvimento Seguro de Aplicações para Android. Ana Cláudia Costa"

Copied!
39
0
0

Texto

(1)

Desenvolvimento Seguro de

Aplicações para Android

(2)

Desenvolvimento Seguro-Android

Android dominated the smartphone market with a share of 82.8%

(3)
(4)

Desenvolvimento Seguro-Android

Conhecendo o Android AndroidManifest Service SQLInjection ContentProviders Armazenamento Interno

(5)

Arquitetura

(6)

Conhecendo o Android

l Cada app Android executa em sua própria

sandbox

l Multi-usuário cada app é um usuário

diferente

l Por padrão o sistema assina cada app

como um único usuário Linux(ID usado

somente pelo sistema e desconhecido pelo app)

l O sistema atribui permissões para os

arquivos de modo que apenas o User ID assinado possa acessá-los

(7)

Conhecendo o Android

l Cada processo tem sua própria máquina

virtual, uma app executa isolada das demais

l Cada app é executada em um processo

linux próprio

l Diferentes apps podem ser assinadas com

o mesmo certificado

l Todas as permissões de acesso de uma app

deve ser permitida pelo usuário no momento da instalação

(8)

AndroidManifest.xml

l Toda aplicação deve possuir o arquivo no

diretório raiz

l Fornece informações do que o sistema

deve ter antes de executar a app

l O nome do pacote para a aplicação que

servirá como identificação única para a aplicação

l Descreve os componentes da aplicação

(Activities, services, broadcast receivers e content providers)

(9)

AndroidManifest.xml

l

Contém o nível mínimo do Android API

requerido pela aplicação

l

Contém quais permissões a aplicação

deve ter inclusive as permissões

(10)

AndroidManifest.xml

(11)

AndroidManifest.xml

l <permission> - Níveis de proteção l Normal

l Dangerous l Signature

(12)

AndroidManifest.xml

l Explorando o AndroidManifest no Android

(13)

Service

Pode executar ações de longa duração

Background , não fornece interface para o

usuário

Um componente inicia o serviço e ele

continuará em segundo plano, mesmo que o usuário saia do aplicativo

Não é um processo separado, permite que os

erros sejam visualizados na aplicação principal.

(14)

Service

Assume basicamente duas formas:

Started – quando um componente inicia

através do startService(), após isso ele

executará indefinidamente. Até a chamada do stopService ou até que o prórpio

serviço(stopSelf) termine

Bound – Um componente da aplicação liga-se

a ele, estabelece uma interface

cliente-servidor que permite interagir com o serviço e até mesmo realizar uma intercomunicação entre processos

(15)

Service

Cada Service deve estar declarado no

AndroidManifest

Por Padrão services não são exportados para

outras aplicações

Se você adicionar um intent filter ele passa a

ser exportado por padrão

Recomenda-se que declare explicitamente no

manifest se deve ser exportado, neste caso outros aplicativos precisarão utilizar a tag <uses-permission> para o acesso

(16)

Service

l Caso precise fazer chamadas importantes,

como armazenar uma senha ou mensagens privadas é necessário validar se está

conectado ao service correto ou a um programa hostil

l É possível explicitar o componente que está

tentando conectar

l http://developer.android.com/training/articles/

(17)

SQL Injection

Entendendo Banco de Dados - Android

l SQLite

l Android provê suporte l Leve

l Multiplataforma l OpenSource

l Cada Aplicação pode criar um ou mais BD l O BD só pode ser acessado pela aplicação

(18)

SQL Injection

Entendendo Banco de Dados - Android

l SQLite Classes

l SQLiteDatabase – Manipulação l SQLiteOpenHelper - Criação

(19)

SQL Injection

l Entendendo Banco de Dados - Android l SQLiteOpenHelper

Fonte:

(20)

SQL Injection

Entendendo Banco de Dados - Android l SQLiteDatabase

l execSQL(String sql);

l RawQuery( String sql, String[] SelectionArgs); l insertOrThrow(String table, String

nullColumnHack, ContentValues values);

l delete(String table, String whereClause, String[] whereArgs)

l update(String table, ContentValues values, String whereClause, String[] whereArgs)

(21)

SQL Injection

(22)

SQL Injection

l SQLInjection – Sistema Login

Usuário: ana

(23)

SQL Injection

(24)

SQL Injection

l SQLInjection – Sistema Login

l SQL = SELECT * FROM usuario WHERE

usuario = ana AND senha ='

2' OR '1 = 1

' l Sempre será verdadeiro!

(25)

SQL Injection

l Como Prevenir?

l Evitar rawQuery

l Conhecer os métodos e utilizar o adequado

l Utilizar Query parametrizada

l Filtrar os caracteres na inserção

(26)

SQL Injection

Consulta :

(27)

SQL Injection

(28)

SQL Injection

(29)

Content Provider

Compartilhando informações entre Apps

l Permite que determinadas informações sejam

públicas para as demais aplicações instaladas no sistema operacional .

l Permite a outras aplicações: consultar, inserir,

alterar e excluir informações.

l Provedores de conteúdo nativos do android:

contatos da agenda, imagens e vídeos

l Forma de comunicação com o provedor(nativo

(30)

Content Provider

(31)

Content Provider

Caso você não pretenda que outras aplicações

façam uso de seu contentProvider, configure no Android Manifest android:exported = false

Entre Aplicações Próprias deve fazer uso do

atributo de proteção android:protectionlevel

= signature, A permissão signature não requer

confirmação do usuário, utilizadas quando as aplicações são assinadas com a mesma chave

Lembre-se das prevenções vistas anteriormente

sobre SQLInjection, sempre em seu ContentProvider

(32)

Content Provider

l When creating a ContentProvider that will be

exported for use by other applications, you can specify a single permission for reading and

writing, or distinct permissions for reading and writing within the manifest. We recommend that you limit your permissions to those required to accomplish the task at hand. Keep in mind that it’s usually easier to add permissions later to

expose new functionality than it is to take them away and break existing users.

(33)

WebView

l Permite mostrar páginas web em sua Activity l Permitir o acesso no AndroidManifest

(34)
(35)

WebView

l Prevenindo Cross-Site Scripting(XSS) l Diminuir a capacidade do webview

APENAS para as funcionalidades que serão usadas pelo seu app

l Se sua aplicação não usa diretamente

JavaScript NÃO chamar o método setJavaScriptEnabled()

l Se necessário use addJavaScriptInterface()

(36)

WebView

l Prevenindo Cross-Site Scripting(XSS)

l Recomenda-se que utilize

addJavaScriptInterface () apenas para Scripts contidos em seu próprio aplicativo APK

l Utilize clearCache() para deletar aquivos

armazenados localmente

l Dispositivos com Android mais antigo que 4.4

utilizam uma versão WebView com questões de segurança, nestes dispositivos recomenda-se sempre confirmar que o webview deve exibir apenas conteúdo confiável

(37)

Armazenamento Interno

Arquivos Criados por sua aplicação são

acessíveis apenas por sua aplicação

Caso outras aplicações necessitem utilizar

EVITAR o uso dos modos

MODE_WORLD_WRITEABLE ou

MODE_WORLD_READABLE para realizar a interconexão de processos

Utilize ContentProviders com permissões

(38)

Desenvolvimento Seguro-Android

Conclusão

Conhecer os mecanismos disponíveis para a

comunicação correta entre aplicações

Manter-se atualizados sobre os vírus e malwares que

surgem

Validar client-side e server-side

 Aproveitar o crescente mercado de dispositivos com

(39)

Ana Cláudia Costa

Mestra em Informática – UFPB

Analista de Sistemas/Desenvolvolvedora Contato:

E-mail: anaclaudiaa@gmail.com

Referências

Documentos relacionados

Este trabalho apresentou uma análise de desempenho de aplicações móveis em renderização de interface gráfica e acesso ao hardware do dispositivo utilizando duas ferramentas

Dentro do contexto acadêmico, o objetivo destas notas é apresentar o dispositivo, desde a sua estrutura de hardware até exemplos de programação em linguagens como C# (via os

Tal como se mencionou na secção 4.1.2, para a criação do simulador, os ficheiros XML necessários, pertencentes aos temas do sistema NiVo, são: o “base.xml”, o

Visando estabelecer as mensagens a serem trocadas entre os módulos da arquitetura de integração proposta, foi realizado um estudo para estabelecer as

Dependerá de um estudo para que se assegure, diante das condições que se apresentam, a solução que apresente o melhor Retorno ao Investimento (em Inglês: Return on Investment: ROI).

Portfólio alinhado ao propósito da empresa Valor de marca Indicadores de resultado Mitigação de riscos com processo de compliance Insumos para relações institucionais

Analisando as relações do volume minuto e volume corrente, observou-se os valores no PRÉ uma diferença significante quanto ao grupo intervenção em relação ao grupo controle,

Reconhecendo que o livro assume um papel simbólico muito importante para a sociedade, buscamos entender a relação entre a política do Livro Didático e o ensino das Américas a