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

dar*_*der 12 jailbreak nsuserdefaults in-app-purchase ios

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

我正在按照本教程购买应用程序中的iOS应用程序,并存储在NSUserDefaults中购买的产品.这就是我想知道的原因:

拥有越狱设备的用户是否可以修改应用程序的NSUserDefaults密钥和值?

非常感谢你,如果你知道它.

Nat*_*ate 20

是的他们可以.用户默认值相对于您的app目录存储在此处:

./MyAppName.app
./Library/Preferences/com.mycompany.MyAppName.plist
Run Code Online (Sandbox Code Playgroud)

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

plutil -convert xml1 com.mycompany.MyAppName.plist
vim com.mycompany.MyAppName.plist
Run Code Online (Sandbox Code Playgroud)

您可以查看iOS密钥链,如@rckoenes所说,或者像这个开源安全默认值替换,它提供类似的接口NSUserDefaults.


更新:

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

/var/mobile/Containers/Data/Application/<GUID>/Library/Preferences/
Run Code Online (Sandbox Code Playgroud)

Apple参考文档


Lef*_*ris 7

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

  • 该应用程序称为iExplorer.谷歌了:-) (5认同)