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

Lyu*_*tko 4 database android

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

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

  1. 将数据库的访问权限仅限于应用程序所有者(创建并提供服务).
  2. 在DB所有者应用程序的使用会话期间,限制或拒绝所有其他应用程序对数据库的访问.
  3. 有没有办法密码保护您的数据库?

使用sqlite3进行的测试表明,您可以在另一个应用程序使用它时更改数据库.因此,我认为可能某些外部应用程序可能会破坏您的数据或使用它,这很糟糕.

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

  1. 显示用户消息并关闭
  2. 显示用户消息并继续工作
  3. 刚关闭?

在所有这些发生之后,您如何建议下次启动应用程序?

谢谢

Tao*_*Tao 6

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

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

上述规则有几个例外:

  1. 在SDK中的模拟器中,adb shell使您可以完全访问模拟电话的文件系统.在Android手机中不是这种情况.
  2. 在已经"root"的手机中,任何获得root权限的应用程序都可以访问任何其他应用程序(以及其他任何应用程序)的db文件 - 这是根植手机的成本/风险,并且是设备所有者的责任.

基本上,您不必担心它.Android通常会为您阻止这些问题.


小智 5

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

  1. 下载ASTRO文件管理器.
  2. 使用该选项将应用程序备份到SD卡中.
  3. 将备份的文件传输到您的计算机中.
  4. 使用Apk_OneClick工具(在Internet上搜索)来反编译应用程序包.

现在你拥有一切,代码,数据库,图像,xml文件,一切!

所以我可以告诉你,你可以在几分钟内拥有其他人的代码和数据库.要保护您的应用程序,请使用ProGuard,并对您的数据库使用某种类型的加密.我个人加密每个字段数据并在运行时解密它,简单的加密作为XOR它实际上没有太多的性能损失.