【发布时间】:2015-05-03 02:59:18
【问题描述】:
在 NSUserDefaults 中存储敏感数据公平吗?
我了解到这是一个大问题,因为 NSUserDefaults 以二进制格式存储在 plist 中,没有加密,并且存储在您的应用程序目录中。这意味着任何用户,即使是“最笨”的用户,都可以用 5 分钟的时间来修改您的 NSUserDefaults。
任何用户都可以编辑、查看、分享、移动以及任何他们喜欢的内容。越狱用户可以简单地安装 iFile,导航到您的应用目录,播放文件,然后继续他们的一天。
那么,存储用户敏感信息的最佳方式是什么?我应该使用 Coredata 并存储加密信息吗?
【问题讨论】:
-
根据您想要存储的敏感信息的程度,最好根本不存储它。你想存储什么样的信息?对于少量数据 Keychain 可能会做(AFAIK 它与 JB 设备上的 NSUserDefaults 保护几乎相同),对于某些信息,您可能需要加密整个存储和/或单个数据属性。
-
用户凭据、用户电子邮件、用户地址等...
-
看看 Keychain API。
-
好主意...谢谢!!!
-
UserDefaults 是用来存储用户设置而不是整个应用程序数据,所以如果你想存储一些数据,比如文本文档,你应该使用不同于 UserDefaults 的 plist。
标签: ios core-data plist nsuserdefaults nsdocumentdirectory