Twitter 和 Facebook 等服务的访问 token 是否应该加密? 特别是, token 应该存储在设备的 Keychain 还是 UserDefaults 上?如果用户的设备被盗/拿走,可能会出现哪些安全问题
这是我到目前为止的想法。
钥匙串(keychain)的优点: 加密
缺点: 用户删除应用程序时无法清理
UserDefaults 的优点: 保存在应用内。
缺点: 没有加密。
最佳答案
您的 UserDefaults 'con' 需要修改:默认 不加密。您可以使用例如自己加密内容CommonCrypto,但它需要额外的工作来存储纯文本。
OAuth token 的意义在于,拥有该 token 的人无需提供凭据即可使用相关服务。因此,您应该像保护密码一样保护它,如果您不得不存储它,因为它具有相同的值。
如果用户的设备被盗,除非他们用密码锁定了他们的设备,否则窃贼有能力在您描述的任何一种情况下以用户身份使用您的应用。如果您不加密访问 token ,那么他们还有能力提取它并从他们控制的代码中重放它。
关于ios - 访问 token 持久性最佳实践 (iOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5793128/