访问令牌持久性最佳实践(iOS)

应该访问像Twitter和Facebook的服务令牌encryption? 特别是,应该将令牌存储在设备的Keychain与UserDefaults之间? 如果用户的设备被偷走,可能会出现什么样的安全问题

这是我到目前为止所提出的。

优点钥匙串:encryption

缺点:没有办法清理用户删除应用程序

UserDefaults的优点:保持在应用程序内部。

缺点:没有encryption。

您的UserDefaults'con'需要修改: 默认情况下不encryption。 你可以使用例如CommonCrypto自己encryption内容,但是需要额外的工作来存储纯文本。

OAuth令牌的要点是拥有该令牌的人可以使用相关服务,而无需提供凭证。 因此,你应该保护它,就像保护密码一样,如果你必须保存密码,因为它具有相同的值。

如果用户的设备被盗,那么除非他们有密码locking他们的设备,小偷有能力使用您的应用程序作为您描述的任何一种情况下的用户。 如果您不encryption访问令牌,那么他们还有能力提​​取并从其控制下的代码中重放。