是否应加密Twitter和Facebook等服务的访问令牌? 特别是,应该将令牌存储在设备的Keychain vs. UserDefaults中吗?如果用户的设备被盗/被占用,可能会出现哪些可能的安全问题
这是我到目前为止所提出的。
钥匙串的优点: 加密
缺点: 用户删除应用时无法清理
UserDefaults的优点: 保持在应用程序内。
缺点: 没有加密。
答案 0 :(得分:11)
您的UserDefaults'con'需要修改:默认情况下不加密 。您可以使用例如自己加密内容。 CommonCrypto,但它需要额外的工作来存储纯文本。
OAuth令牌的要点是拥有该令牌的人可以使用相关服务而无需提供凭据。因此,您应该像保护密码一样保护它,如果您必须存储密码,因为它具有相同的值。
如果用户的设备被盗,那么除非他们使用密码锁定他们的设备,否则小偷有能力在您描述的任何一种情况下将您的应用程序用作用户。如果您不加密访问令牌,那么他们还可以从其控制下的代码中提取并重放它。