用户是否可以访问iOS沙箱中的Documents目录?

时间:2017-02-01 18:36:01

标签: ios swift filesystems sandbox

我正在保存数据,用于跟踪应用程序沙箱的Documents目录中的用户虚拟购买。出于显而易见的原因,我不希望用户有权访问此文件或能够操作它。

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

我确实从Apple找到了这个link,建议将此类数据存储在Library目录中。它似乎并不表示用户访问它是否安全。

2 个答案:

答案 0 :(得分:1)

我不是iOS安全专家,但是,我可以分享我在iOS上使用用户数据的经验。任何更正/评论都表示赞赏。

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

1)不要将重要数据保存在Documents目录或NSUserDefaults 。即使在非越狱设备上,用户也可以轻松访问它。例如,您可以查看iExplorer:据我记忆,它可以解决问题。

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

3)数据加密假设您的应用程序有一个密钥可以解密它。存储密钥的最佳方法是 KeyChain 。也许,这是唯一可以存储密钥和其他内容的地方,例如用户的授权数据,而不用担心从外面被盗。

最终,在完成所有这些步骤后,用户仍然可以访问用户的加密数据。除非经过加密,否则无法读取它,但可以访问自己的钥匙串和某些技能,高级用户最终可以获得原始数据。而且,它仍然可以被损坏。因此,在保存数据不被损坏或删除方面,您仍然需要远程存储备份或数据本身。

答案 1 :(得分:0)

您应该将Documents目录中的数据视为公共数据。使用iExplorer或iFunBox等工具通过USB连接到计算机的iOS设备的任何人都可以查看应用程序的Documents and Caches目录中的内容。为安全起见,请考虑使用钥匙串(如果适用)或验证收据的网络服务(共享密钥,用户信息等)以确保用户实际购买了产品,并且不会尝试欺骗事务。