为什么使用 UserDefaults 在 iOS 上存储敏感信息不安全?

Why is using UserDefaults to store sensitive information on iOS not safe?

我对 iOS swift 比较陌生,但据我所知

  1. 用户无法访问或修改我的 iOS 应用程序的 UserDefaults

  2. 其他应用程序无法访问或修改我的 iOS 应用程序的 UserDefaults

至多,在UserDefaults中找到的信息被删除。但不能被第三方自由读取或修改。

那么在这里存储敏感信息到底有什么危险呢?有人能给出一个合理的攻击示例吗?由于在 iOS 平台上使用 UserDefaults 而不是 Keychain Services 会暴露重大软件漏洞?

首先,加密 - UserDefaults 不使用开箱即用的加密。

其次,在任何设备上,用户都可以访问文件系统,特别是您的应用程序容器,因此可以使用 iExplorer 应用程序访问 UserDefaults,并访问代表用户默认设置的整个 plist - 更改它并提取信息 - 不受保护针对恶意用户。

第三,您在应用中使用的第三方库能够访问您的“标准”用户默认值或猜测您用来提取/覆盖信息的某些容器名称。

可能还有更多原因,但我认为这些是主要原因