Android系统。如何保护您的数据库?

时间:2009-09-23 10:12:21

标签: database android

您知道在Android中保护数据库的方法吗?

我想实现以下内容,但不知道是否可能:

  1. 将对数据库的访问权限仅限于应用程序所有者(创建并提供服务)。
  2. 在数据库所有者应用程序的使用会话期间,限制或拒绝所有其他应用程序对数据库的访问。
  3. 有没有办法密码保护您的数据库?
  4. 使用sqlite3进行的测试表明,您可以在另一个应用程序使用它时更改数据库。因此,我认为可能某些外部应用程序可能会破坏您的数据或使用它,这很糟糕。

    另外,您如何建议处理在数据库同时使用期间可能发生的数据库异常:

    1. 显示给用户留言并关闭
    2. 显示用户消息并继续工作
    3. 刚关闭?
    4. 在这一切发生之后,您如何建议下次启动应用程序?

      由于

2 个答案:

答案 0 :(得分:6)

android系统自动实现并强制执行列表中的选项(1)。电话/系统上的每个应用程序都有自己的用户ID,没有任何应用程序可以访问任何其他应用程序的数据库文件。

如果您确实希望共享数据(使用访问控制),则可以创建内容提供程序,然后其他应用程序可以使用该提供程序:http://developer.android.com/intl/de/reference/android/content/ContentProvider.html

上述规则有几个例外:

  1. 在SDK中的模拟器中,adb shell可让您完全访问模拟手机的文件系统。在Android手机中不是这种情况。
  2. 在已经“root”的手机中,任何获得root权限的应用程序都可以访问任何其他应用程序(以及其他任何应用程序)的db文件 - 这是根植手机的成本/风险,并且设备所有者的责任。
  3. 基本上,您不必担心它。 Android通常会为您阻止这些问题。

答案 1 :(得分:5)

你真的应该担心。 很容易获得你的数据库甚至代码而不需要手机。 以下是如何执行此操作的示例:

  1. 下载ASTRO文件管理器。
  2. 使用该选项将您的应用程序备份到SD卡中。
  3. 将备份的文件传输到您的计算机中。
  4. 使用Apk_OneClick工具(在互联网上搜索)反编译应用程序包。
  5. 现在你拥有一切,代码,数据库,图像,xml文件,一切!

    所以我可以告诉你,你可以在几分钟内拥有其他人的代码和数据库。 要保护您的应用程序,请使用ProGuard,并对您的数据库使用某种类型的加密。我个人对每个字段数据进行加密并在运行时对其进行解密,简单的加密就像XOR一样,它并没有给性能带来太大的损失。