安全首选项或数据目录中的数据库文件

时间:2014-12-18 10:22:13

标签: android security sharedpreferences android-sqlite

我最近在Android上创建了一个应用程序,它有一个登录页面。它完全脱机,因此在线或基于网络的解决方案对我没有帮助。我认为有两种方法可以完成这项任务。

  • 在首选项XML文件中保存密码哈希
  • 在SQLite数据库中保存密码哈希

但是,在我看来,这两种方式都可能不安全,因为用户可以在DDMS中加载我的应用程序的数据目录,然后取出我的首选项或数据库文件,然后尝试操作它。

现在,我的问题是:

是否存在任何完全安全的方法(最好不使用文件)或加密首选项或数据库文件?

提前致谢

解决方案(来自Marcin Orlowski的想法)

一个相对安全的解决方案是散列密码和另一个字符串,只有我的应用程序知道(假设没有重新设计工程),在这种情况下,攻击无法用他自己的散列字符串替换我的散列字符串。

2 个答案:

答案 0 :(得分:1)

不,没有防弹解决方案。可以通过或多或少的努力提取应用程序中的内容,或者您​​的应用程序可能被黑客攻击等。如果需要存储密码,请不要将plain存储为纯文本。首先对它进行sha1md5哈希并存储哈希值,所以即使有人会在你的prefs / DB上找到它然后他仍然不知道密码(但他可以尝试强制它使用ie rainbow tables等)。根据您使用密码保护的数据的敏感度,使用哈希可能就足够了(如果您不对数据本身进行加密,那么更进一步是没有意义的)

答案 1 :(得分:0)

将密码哈希保存在私有ContentProvider中。 SharedPreferences XML和数据库文件只能在用户使用root电话时从DDMS获取。