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

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

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

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

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

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

./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开始,数据目录(以及首选项plist文件)现在位于:

 /var/mobile/Containers/Data/Application//Library/Preferences/ 

Apple参考文档

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

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

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