如何在Android设备上保护/检测数据库恢复?

3
我有一个安卓应用,以常规方式将数据保存到sqlite数据库中。当用户使用应用时,数据发生更改等操作。目前没有问题...但是当用户使用某些备份软件(如Titanium Backup或其他)制作应用程序的备份后,他可以将数据恢复到旧状态。我需要一种保护应用程序免受此影响的方法,或者检测恢复并加以处理。
简单流程如下:
1. 安装应用程序 2. 使用应用程序 3. 达到应用程序数据库的STATE1状态 4. 备份应用程序(使用任何备份/还原应用程序,设备可以被root) 5. 使用应用程序 6. 达到应用程序数据库的STATE2状态 7. 恢复应用程序(或仅恢复数据)到STATE1 - 这是我需要拒绝或在应用程序的下一次执行中检测到的点。
到目前为止,我已经尝试过访问时间检测和比较,但它在不同的设备和ROM上似乎非常不可靠。谢谢。
1个回答

2
为了实现这个,你需要将一些状态保存在设备上,或者至少放在data目录之外。最简单的方法可能是将DB文件的指纹保存在外部存储(SD卡)上的某个“隐藏”目录中。如果你的应用程序有Web登录等功能,则为每个用户存储指纹。
无论如何,用户对设备拥有完全控制权,因此你无法100%防止这种情况发生。你的应用程序需要优雅地处理任何DB变化或者检测到致命不一致时简单地失败。

谢谢,这就是我所寻找的方式...SD卡上的安全指纹文件也可以备份,但这是保护的又一步。 - Ejzy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接