1

我正在构建一个包含具有非常敏感数据的 SQLite 数据库的 Android 应用程序。由于任何对设备有物理访问权限的人都可以复制数据库,因此我想到了几个解决方案来保护数据库中的数据。我们当然可以在将其输入数据库之前对其进行加密,但是由于这会抑制实际查询数据库的可能性,因此实际上会使数据库变得无用。另外:如果我们将密钥存储在应用程序中,那么检索密钥也将变得非常容易,这样加密就毫无意义了。

所以我们在登录时将所有数据与服务器同步,之后有几个选项:

  1. 在 onStop() 方法中删除整个数据库。我认为这将是非常安全的,除了应用程序崩溃时,我认为它不会调用 onStop() 方法。由于您可以手动销毁该过程,因此我认为可以物理访问设备的人仍然可以访问数据库。正确的?
  2. 使用内存中的 SQLite 数据库。根据this SO answer虽然“每个与内存数据库的新连接都会创建一个新的空数据库。 ”。这意味着您不能在活动之间共享它。
  3. 将同步的数据存储在几个 Java 列表/数组中,并从中获取所有信息。问题是这些列表只存在于一个活动中。为了解决这个问题,我想在一个片段中创建完整的应用程序。我还没有开始尝试这个,但这似乎也不是正常的方法。

有谁知道这些想法是否有意义,更重要的是,是否没有更好/更方便的方式在应用程序活动中安全地保存数据?欢迎所有提示!

4

1 回答 1

1

这意味着您不能在活动之间共享它。

你当然可以。使用单例SQLiteDatabase。无论如何,您都应该这样做,以启用跨多个线程的线程安全访问。

将同步的数据存储在几个 Java 列表/数组中,并从中获取所有信息。问题是这些列表只存在于一个活动中。

再一次,如果您注意内存泄漏,您可以使用单例或静态数据成员。

但是,如果使用“一对 Java 列表/数组”是一个选项,我不知道你为什么要搞乱 SQLite。SQLite 旨在将关系数据存储在文件中,听起来您不需要任何文件。

于 2013-10-22T16:02:59.910 回答