用户可以在iOS应用中修改NSUserDefaults键值吗?

时间:2012-10-09 07:41:07

标签: ios in-app-purchase nsuserdefaults jailbreak

我对安全性有疑问。

我正在使用this tutorial之后的应用内购买制作iOS应用,并存储在NSUserDefaults中购买的产品。这就是我想知道的原因:

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

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

3 个答案:

答案 0 :(得分:19)

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

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

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

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

您可以查看iOS钥匙串,如@rckoenes所说,或like this open source secure defaults replacement,它提供类似于NSUserDefaults的界面。


更新

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

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

Apple Reference Docs

答案 1 :(得分:7)

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

答案 2 :(得分:4)

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

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