答案 0 :(得分:26)
简短回答:非常安全。
答案很长:首先,如果您要创建一个允许用户登录Web /远程服务的应用程序,您可能需要查看AccountManager
。学习API并与之集成有点困难,但是你会得到一些好处:
AccountManager
)。SyncAdapter
s(并且编写它们会非常简化,因为AccountManager
会使用正确的帐户调用您的适配器 - 您不必为每个帐户运行同步手动地)。Settings > Accounts & sync
。查看文档中的Sample Sync Adapter - 它会显示如何使用AccountManager
(如果您不需要,可以忽略同步内容)。
现在,关于存储密码的安全性(以下内容对于在SharedPreferences
和AccountManager
中存储密码都有效。只要运行应用程序的设备没有root用户,它就完全安全了。没有其他应用程序,但你的可以读取密码。如果使用USB电缆将手机连接到PC并使用adb pull
尝试获取相应的文件,则甚至无法读取密码。
但是,如果手机是root用户,任何获得超级用户访问权限的应用都可以读取密码。此外,adb pull
有效,您可以在几秒钟内获得密码。
因此,建议使用加密(特别是如果您的Web /云/远程服务包含敏感数据)。我在上一个项目中使用了SimpleCrypto
(与AccountManager
一起使用)并且效果很好。如果您想知道,我只使用常量作为“主密码”。为了增加安全性,我对最终版本(check out how)进行了模糊处理。
答案 1 :(得分:4)
从来没有保证以纯文本形式存储密码,还记得索尼最近发生的事情吗?
答案 2 :(得分:0)
您不应该直接保存密码,而是保存密码的哈希值。