您应该使用帐户管理器来存储Android应用程序的用户名和密码吗?

我想知道是否应该实现保存用户凭据,例如用户名,电子邮件,密码等。我找不到一个很好的理由自己使用它。AccountManager

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

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


答案 1

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

还应该指出的是,正如在上面的帖子中提到的,以及在没有SyncAdapter的帐户管理器中提到的那样,你不能没有一个,所以在你的特定情况下使用它可能不好。AccountManagerSyncAdapter

我看不出有任何理由专门使用用于存储此类信息 - 在一天结束时,它与手动将数据存储在您自己的数据库或文件中没有什么不同。如果有的话,它可能会使事情复杂化 - 你为什么不把它存储在里面?AccountManagerSharedPreferences

我能想到的鼓励使用的唯一原因是,如果您想在许多不同的应用程序之间共享您的帐户,因为数据存储在中央Android数据存储中,所有应用程序都可以访问。但是,如果不需要这样做,我认为使用起来可能更容易,更简单AccountManagerSharedPreferences


答案 2

概述

使用 AccountManager 存储凭据比存储在文件或 SQL DB 中要安全得多。
文件可以由任何其他应用程序检索,不像通过帐户管理器Android将强制只有您的应用程序才能访问密钥。

但是,例如,在丢失手机的情况下,即使帐户管理器也不完全安全,请参阅此处以获取更多信息

良好做法

  • 我建议使用帐户管理器,而不是以明文形式存储密码,而是存储哈希值。
  • 为了获得更好的安全级别,最好存储由 Web 服务提供并与帐户关联的设备专用令牌(在 Web 服务端),并使用户能够吊销令牌。

不好

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

另请参见


推荐