ios - 用户是否有权访问 iOS 沙箱中的文档目录?

标签 ios swift filesystems sandbox

我在应用程序沙盒的文档目录中保存跟踪用户虚拟购买的数据。出于明显的原因,我不希望用户访问或能够操作此文件。

这是存储这些文件的正确目录吗?如果不是,我可以在哪里存储用户无法访问的文件?

我确实找到了这个 link来自 Apple,建议此类数据应存储在 Library 目录中。不过,它似乎并没有说明用户访问它是否安全。

最佳答案

我不是 iOS 安全专家,但是,我可以分享我在 iOS 上处理用户数据的经验。感谢任何更正/评论。

一般来说,最好的建议是使用受 SSL 保护的连接远程存储重要用户的数据(即拥有服务器后端或使用 iCloud)。但是,如果您出于某种原因被迫在本地存储数据,这里有一些建议:

1) 永远不要将重要数据保存在 Documents 目录或 NSUserDefaults 原样 中。即使在未越狱的设备上,用户也可以很容易地访问它。例如,您可以查看 iExplorer:据我所知,它可以解决问题。

2) 如果您确实需要在本地存储一些数据,无论您选择的是:Documents 文件夹、UserDefaults 还是CoreData,您都必须对其进行加密。算法的选择取决于您,但最好使用一些 iOS 内置的解决方案。

3) 数据加密假定您的应用程序拥有用于解密它的 key 。存储 key 的最佳方式是 KeyChain。可能这是唯一可以存储 key 和其他内容(例如用户授权数据)而无需担心从外面被盗的地方。

最终,在所有这些步骤之后,您的用户的加密数据仍然可以被用户访问。除非加密,否则无法读取它,但通过访问自己的钥匙串(keychain)和一些技巧,高级用户最终可以获得原始数据。而且,它仍然可以损坏。因此,就保护数据免遭损坏或删除而言,您仍然需要将备份或数据本身存储在远程某个地方。

关于ios - 用户是否有权访问 iOS 沙箱中的文档目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41987149/

相关文章:

ios - 两个 NSFetchResultControllers ,一个 TableViewController

ios - 相机在启动情绪检测器时卡住

ios - 条件绑定(bind)的初始化程序必须具有 Optional 类型,而不是 '[AVCaptureDevice]'

ios - 使用 swift 从 iOS 应用程序调用特殊号码

ios - 保存 UIImageView 的位置

java - java 遍历文件系统

swift - 是否可以确定显示屏上 Dock 中图标的 x,y 位置?

json - 如果我不确定 key ,我应该如何使用 JSONDecoder 解码 json 对象

hadoop - Hive 和 Impala 以及它们与 HDFS 的交互

linux - Linux Mint 上神秘的 find 命令占用内存