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

标签 ios swift userdefaults

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

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

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

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

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

最佳答案

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

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

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

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

关于ios - 为什么在 iOS 上使用 UserDefaults 存储敏感信息不安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68022172/

相关文章:

ios - PFTableViewCell 在 iOS 上乱七八糟

swift - 如何编译给定文件夹中的任何 swift 文件?

ios - swift 中出现此错误的原因是什么? : script error -54. 由于错误 -1700 无法获取错误文本

json - 我应该在哪里存储我的 Xcode Swift 应用程序的初始数据?

IOS 搜索标签名称补全气泡

ios - 这是什么意思?无效* free_me = 0;

ios - kAudioFormat 用于 .aif 音频文件转换?

ios - 如何使用 Swift 选择 iOS 照片应用程序中的所有 UICollectionView 单元格?

swift - 从 UserDefaults 获得的 bool 值打印为 0 或 1,即使保存为 Any

swift - UserDefaults 不会在应用程序关闭并重新打开后保存数据