19

我想知道是否应该实施AccountManager以保存用户凭据,例如用户名、电子邮件、密码等。我找不到自己使用它的充分理由。

我不希望其他应用程序可以访问Accounts,我真的不希望它们显示在“帐户和同步”设置中(尽管这可能没什么大不了的)。

所以我的问题是:我应该使用它吗?优点缺点?我可以隐藏Accounts其他应用程序并阻止它们出现在“帐户和同步”中吗?

4

2 回答 2

18

这个问题的公认答案可能会对您有所帮助... 我应该使用 Android AccountManager 做什么?

还应该指出,正如上面的帖子以及在没有 SyncAdapter 的 AccountManager 中提到的那样?,你不能AccountManager没有 a SyncAdapter,所以在你的特定情况下使用它可能不好。

我看不出有任何理由AccountManager专门使用一个来存储这种类型的信息——归根结底,这与自己手动将数据存储在自己的数据库或文件中没有什么不同。如果有的话,它可能会使事情复杂化——你为什么不把它存储起来SharedPreferences呢?

我能想到鼓励使用的唯一原因是,AccountManager如果您想在多个不同的应用程序之间共享您的帐户,因为数据存储在中央 Android 数据存储区中,所有应用程序都可以访问该数据存储区。但是,如果这不是必需的,我认为它可能更容易使用SharedPreferences

于 2012-06-05T02:53:59.137 回答
9

概述

使用 AccountManager 存储凭据比存储在文件或 SQL 数据库中安全得多。
任何其他应用程序都可以检索文件,这与通过 AccountManager 不同,Android 将强制只有您的应用程序才能访问密钥。

但即使是 AccountManager 也没有完全保护,例如在手机丢失的情况下,请参阅此了解更多信息

良好做法

  • 我建议使用 AccountManager 并且以明文形式存储密码,而是以散列形式存储。
  • 并且为了更高级别的安全性,最好存储由 web 服务提供并关联到帐户(在 web 服务端)的设备专用令牌,并允许用户撤销令牌。

不好

  • 不要明确的甚至散列的密码存储为文件或任何人都可以访问的数据库中。
  • 永远不要存储清晰的密码,而是始终使用哈希值。

也可以看看

于 2014-04-16T00:25:30.257 回答