2013-02-12 104 views
1

我想知道。安全SQLite数据库

我想让我的数据库私人。可能吗。

如何在SQLite数据库中使用context.MODE_PRIVATE

我想让我的数据库私人其他应用程序不应该访问该数据库。

+0

您的应用程序的文件被沙盒从其他人。您的数据库的内容将不会被其他应用程序访问,除非您这样做。如果用户拥有root用户权限(在这种情况下所有投注都关闭,除非您的数据已加密),否则其他应用程序在未经您的许可/您指定的方式之外查看文件的唯一方法是。 – Karakuri 2013-02-12 15:41:13

+0

根据你的看法,sqlite中没有什么context.MODE_PRIVATE吧? – Unknown 2013-02-13 04:38:36

+0

不是我所知道的。 'Context.MODE_PRIVATE'用于创建文件,但数据库的创建通常是通过实现'SQLiteOpenHelper'完成的。我还没有看到任何指定任何文件创建模式的方法(但没关系,无论如何,Context.MODE_PRIVATE是默认的)。无论如何,除非您有(a)导出的ContentProvider和(b)发布了其他应用程序可用于查询数据的URI,列名等,否则其他应用程序应该无法与数据库交互。 – Karakuri 2013-02-14 05:53:59

回答

4

在您将数据输入数据库之前对其进行加密。据我所知,SQLite数据库保存在/ data /目录中的某个文件中。更重要的是,您的数据以纯文本格式保存。这意味着有人可以通过将电话生根,获取.db SQLite文件并用文本编辑器打开它来提取数据。

sqlite的作者提供了一个加密数据的版本。这不是免费的

https://guardianproject.info/code/sqlcipher/ SQLCipher是一种SQLite扩展,它提供透明的256位AES数据库文件加密。

以前的sqlcipher是SQLite的开源完整数据库加密不适用于android。但现在它可用作Android平台的alpha版本。开发人员已经更新了标准android应用程序'Notepadbot'以使用SQLCipher。

0

为了保护您的数据库,您必须在应用程序的cache内存中创建数据库。除了你提供了一个external storage path来保存你的数据库,android默认会做这件事。