我一直在研究我的宠物项目,该项目依赖于SQLite数据库来存储信息。最近,我决定要让应用程序受密码保护,并且要加密数据库。到目前为止,没有重大问题。在我的设计中,我一直在努力关注最大可能的安全性。是的,我知道最大的安全性是相当无价值的,因为一切(我正在谈论盐和密文;密码在用户的大脑中)存储在一个设备上,任何知道他们正在做什么的人如果拥有它们可能会破坏它装置。那为什么要这么麻烦?因为我可以。
因此,为此,我一直在考虑在应用程序运行时将数据库的解密版本存储在何处。在线临时存储的最常见建议是SD卡。这对我来说并不合适,因为如果应用程序异常终止(使用任务管理器输入过度热心的用户)或者根本不会终止,SD卡上的数据将持续存在。
最近我一直在想把整个东西存放在内存中,但这看起来非常糟糕。我的测试设备上的数据库非常小(不到100K,其中包含大量的测试数据)但它仍然以错误的方式让我感到困惑,即用户可以在野外拥有一个大型数据库。我非常清楚这样一个事实,即只要有人说“用户永远不会做到这一点”,有些人就会将这种限制击败到地面。
所以,提出问题形式:Android设备上临时存储解密数据库的最佳位置在哪里?最好在应用程序执行之间的某处挥动,但此时,我愿意接受建议。
提前致谢。
答案 0 :(得分:1)
好吧,如果您使用的是sqlite和标准的Android SQLite数据库帮助程序,那么数据库必须位于/ data / data //数据库中。这是默认类从中读取它的唯一位置。
或者,您可以将其存储在SDCard上并编写自定义数据库帮助程序。正如您所提到的,如果您的数据安全,则有明显的理由不这样做。
我想我会建议在代码中做一些事情来混淆你的数据库,也许是通过向数据库发送需要解码功能来解释的数据。除此之外,我认为远程数据库将是保护数据的唯一可行机制。