iOS应用中的用户能否修改NSUserDefaults键值?

13

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

我正在使用这篇教程开发 iOS 应用,并且通过 NSUserDefaults 存储已购买的产品。所以我想问:

用户是否可以在越狱的设备上修改 NSUserDefaults 的键和值呢?

非常感谢您的帮助。

Jer

3个回答

25

可以的。用户默认设置存储在相对于您的应用程序目录的位置:

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

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

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

你可以查看iOS钥匙串,正如@rckoenes所说的那样,或者也可以尝试使用类似于这种开源的安全默认值替代方案,该方案提供了类似于NSUserDefaults的接口。


更新:

自从iOS 8以后,数据目录(因此是偏好设置属性列表文件)现在位于:

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

苹果参考文档


谢谢,您提供的Secure NSUserDefaults对我的情况非常适用,因为我不关心数据是否被读取,但我想防止未经授权的修改 :) - darksider

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

最简单的方法是什么? - Eiko
5
这个应用叫做iExplorer。在谷歌上搜索一下就可以找到它 :-) - Lefteris
谢谢 - 看起来真的很令人印象深刻! :) - Eiko

4

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

您可能希望将安全内容存储在钥匙串中,这比NSUserDefault更加安全一些。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接