为 iOS 应用程序存储会话密钥

信息安全 IOS iPhone
2021-08-28 03:23:30

对于通过 HTTPS 与 RESTful 服务通信的 iOS 应用程序,会话密钥应该存储在 Keychain 还是 NSUserDefaults 中?用户名和密码存储在 Keychain 中,同时存储 sessionKey 似乎很简单。

但是从安全的角度来看,这会给您带来任何额外的安全吗?大概如果有人能够访问您的 NSUserDefaults,他们也能够看到来自该应用程序的 HTTPS 请求流量?

1个回答

NSUserDefaults 未加密并存储在纯文本 .plist 文件中 - 它可以在设备上和同步到 Mac 时轻松打开和读取。NSUserDefaults 用于首选项,而不是用于存储安全登录信息 敏感数据,如密码和密钥。密钥应存储在钥匙串中。Apple 的钥匙串服务编程指南指出,“钥匙串是一个加密容器,其中包含多个应用程序和安全服务的密码。钥匙串是安全存储容器,这意味着当钥匙串被锁定时,没有人可以访问其受保护的内容”。此外,在 iOS 中,每个应用程序只能访问自己的钥匙串项。

正如lynks 所建议的,会话密钥不应该被永久存储。无论如何,我建议查看以下示例/框架: