我是iOS的新手,正在开发一个应用程序,我需要在API端点返回的令牌的基础上维护会话。我查了一下,发现安全数据不应存储在用户默认值中,因此我选择了Keychain。我的问题是:
目前我使用的Keychain相关命令如下:
import SwiftKeychainWrapper //installed through Cocoapods
//Storing
let saveTokenSuccessful: Bool = KeychainWrapper.standard.set(token!, forKey: "myToken")
//Retrieving
let retrievedToken: String? = KeychainWrapper.standard.string(forKey: "myToken")
//Deleting
let removeTokenSuccessful: Bool = KeychainWrapper.standard.remove(key: "myToken")
答案 0 :(得分:2)
Keychain足够安全吗?
我会这么说,可能取决于您数据的敏感度。
Keychain加密后是否存储值(默认行为)?
来自文档:
Apple过去发布了一篇关于iOS安全性的论文,这可能是一个很好的阅读。你可以找到它here。加密是GCM中的AES 128(伽罗瓦/计数器模式)
有关keychains的更多信息。
答案 1 :(得分:1)
Keychain是一个很好的解决方案,因为数据在存储到文件系统之前会自动加密。 来自Apple doc:
...当用户解锁设备时,钥匙串会自动解锁,然后在设备锁定时锁定。应用程序只能访问自己的钥匙串项目,或者与应用程序所属的组共享的项目。