12

我有一个关于安全的问题。

我正在按照本教程制作一个带有应用内购买的 iOS 应用,并将购买的产品存储在 NSUserDefaults 中。这就是为什么我想知道:

具有越狱设备的用户可以修改应用程序的 NSUserDefaults 键和值吗?

如果您知道的话,非常感谢。

杰尔

4

3 回答 3

24

是的他们可以。用户默认值相对于您的应用程序目录存储在此处:

./MyAppName.app
./Library/Preferences/com.mycompany.MyAppName.plist

plist 文件未加密或签名,因此可以轻松修改:

plutil -convert xml1 com.mycompany.MyAppName.plist
vim com.mycompany.MyAppName.plist

正如@rckoenes 所说,您可以查看 iOS 钥匙串,也可以查看类似这个开源安全默认替换的东西,它提供了一个类似于NSUserDefaults.


更新:

从 iOS 8 开始,数据目录(以及首选项 plist 文件)现在位于:

/var/mobile/Containers/Data/Application/<GUID>/Library/Preferences/

苹果参考文档

于 2012-10-09T09:02:32.467 回答
8

即使没有越狱设备的用户也可以修改 plist...

于 2012-10-09T08:19:24.453 回答
4

是的,拥有越狱设备的用户可以轻松修改,NSUserDefault因为它只是应用程序沙箱库目录中的 plist 文件。

您可能希望将安全的东西存储在钥匙串中,这比NSUserDefault.

于 2012-10-09T08:09:08.260 回答