Rec*_*iwe 2 keychain nsuserdefaults ios swift
我正在我的应用程序中执行"记住我"功能,并且我遇到了解决方案,您将所有凭据存储在Keychain和解决方案中,您只需将密码存储在Keychain中?存储的密码我只想在验证时使用,但是我使用的用户名更多,而不是从后端获取它,我可以从磁盘上获取它.提到的解决方案之一是否优于其他解决方案?
经过身份验证,我只是这样做,如果我使用拆分解决方案:
let hasLoginKey = NSUserDefaults.standardUserDefaults().setBool(true, forKey: "loginKey")
NSUserDefaults.standardUserDefaults().setValue(username, forKey: "username")
Run Code Online (Sandbox Code Playgroud)
Rob*_*ier 12
你要求"推荐".建议的做法是根本不存储密码.设计您的服务,使其接受该服务特有的访问令牌.您接受用户名和密码,服务器将您提供访问令牌,存储访问令牌,然后丢弃密码(可能还有用户名).OAuth是一种标准化的方法,可以使用通用的服务器和客户端框架.(就像OAuth因为它的复杂性而让我有点疯狂,它确实是一个很好的协议,而且非常标准.)
存储身份验证令牌的正确位置是钥匙串.正如Zaph指出的那样,"双重加密"这个秘密不会给你任何东西,因为你现在有另外一个秘密(加密密钥)来存储.你在哪里存储?如果您有一个更安全的地方来存储加密密钥,请将令牌放在那里.如果使用硬编码密钥让你感觉更好一点,那就好了,但是安全性的好处很小.
如果您无法以推荐的方式设计服务,并且必须存储原始密码,请将其存储在钥匙串中.往上看.所有相同的论点都适用.钥匙扣是手机上最安全的地方.这并不意味着它是牢不可破的.它只是意味着它比你存储东西的任何其他地方更不容易破碎.
| 归档时间: |
|
| 查看次数: |
2998 次 |
| 最近记录: |