Bom dia. Desenvolvi um sistema para android mas estou um pouco perdido na parte de segurança. Utilizo o banco de dados sqlite e existem pastas no sistema com imagens e pdf. Como proteger esses arquivos (banco de dados, diretorio de imagens e diretorio de pdfs) para que apenas o sistema consiga acessá-los?
No aguardo. Obrigado
enquanto ao banco ele é protegido, somente sua aplicação consegue acessar-lo, o pdf já não sei, você salvou onde ? em qualquer pasta do SD CARD ? Ou na pasta que fica sua aplicação ? (Não sei se tem como fazer isso). Quando você cria o projeto você escolhe se não me engano no Android manifest a pasta do seu aplicativo, onde vai ficar o banco e etc. Exemplo: com.br.guj. Se você consegui salvar os arquivos nesta pasta(o banco SQLite é salvo lá), seus dados estarão protegidos :]
Obs: Tem como acessar atraves de programas como SuperUser de dá acesso total ao usuário do android.
Boa tarde. Obrigado pela resposta.
Meu sistema está no caminho /mnt/sdcard/data/br.com.android/
Dentro deste diretorio tem os diretorios database, relatorios(pdf) e imagens.
Quando eu acesso o cartão de memoria eu tenho acesso a todos eles.
Gostaria que não pudesse ou que fosse criptografado. Tem como?
Obs: Meu celular tem root.
Não sei dizer. Essa aplicação é pra cliente seu ? Se for, não precisa disse, por que é quase certo que seu cliente não vai ter root 
Blz Valeio. Obrigado pela resposta.
Olá
Infelizmente, seus dados não estão protegidos na memória externa
Por default, os arquivos gravados aí são públicos e World-readable
Com alguns apps o usuário poderá ler ou alterá-los
Se os dados forem gravados na memória interna como private então eles são protegidos
Menos, é claro de um usuário root
Abraços
Boa tarde. Reaproveitando este tópico, estou tentando criptografar meu banco de dados sqlite. Estou usando o sqlcipher mas não tenho muita noção de como utilizá-lo.
Estou utilizando este código:
[code]package com.demo.sqlcipher;
import java.io.File;
import net.sqlcipher.database.SQLiteDatabase;
import android.app.Activity;
import android.os.Bundle;
public class HelloSQLCipherActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
InitializeSQLCipher();
}
private void InitializeSQLCipher() {
SQLiteDatabase.loadLibs(this);
File databaseFile = getDatabasePath("demo.db");
databaseFile.mkdirs();
databaseFile.delete();
SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(databaseFile, "test123", null);
database.execSQL("create table t1(a, b)");
database.execSQL("insert into t1(a, b) values(?, ?)", new Object[]{"one for the money",
"two for the show"});
}
}[/code]
O banco foi criptografado mas eu não consigo utilizá-lo. Quando eu vou rodar um código sql ele gera um erro como se não estivesse encontrado a tabela.
Quando eu tento acessar diretamente na console, ele da o seguinte erro: File is encrypted or is not a database.
Alguem pode me ajudar??
Obrigado