当前位置: 首页 > 面试题库 >

NSUserDefaults在iOS 8,9上的安全性如何?

魏臻
2023-03-14
问题内容

应用内购买编程指南建议您可以在NSUserDefaults
此处继续进行应用内购买。但是我发现这篇文章说它是不安全的,并且其中的数据很容易访问和修改:

NSUserDefaults以二进制格式存储在plist中,没有加密,并且存储在应用程序的目录中。这意味着任何用户,甚至“最讨厌的”用户,都可以在5分钟的时间内修改NSUserDefaults。

如果确实如此,那么用户可以轻松免费免费获得作为应用程序内购买提供的任何内容,并且可以使用永久保存NSUserDefaults

本文对iOS 8,9仍然正确吗? 如果是这样,您如何坚持应用内购买?我喜欢一些简单的解决方案。我不(也不想)验证收据等。


问题答案:

强烈建议不要保存敏感数据(UserDefaults例如应用内购买)或明显的数据(例如密码)。甚至高分之类的数据也可以更好地保存在钥匙串中,这样人们就不会作弊。

我认为Apple文档的一部分已经过时,应该更改,因为UserDefaults不是存储敏感数据的方式,因为在应用程序购买中绝对是IMO。

只需将基本数据保存为UserDefaults语言设置,音频设置等即可。

如果要保存敏感数据,则应使用钥匙串。我认为钥匙串API的使用非常棘手,但是GitHub上有一个很好的助手可以使用,它具有CocoaPods和SwiftPackageManager支持,并由其作者积极维护。

https://github.com/kishikawakatsumi/KeychainAccess

我曾经使用过另外2个项目,但现在似乎不再受支持

https://github.com/jrendel/SwiftKeychainWrapper

https://github.com/matthewpalmer/Locksmith

钥匙串要记住的一件事是,即使您删除应用程序,数据仍然会保留,这实际上是一件好事。

所有功劳归其各自包装的作者。

希望这可以帮助



 类似资料:
  • 问题内容: 我正在尝试使用NSUserDefaults将数组保存到我的应用程序的核心数据中。我认为使用NSUserDefaults会很好,但是问题是,无论我将创建默认代码的代码放在哪里,都会引发SIGABRT错误。 这是创建默认值的代码: levelsArray是List对象的数组: 如何阻止SIGABRT弹出并存储阵列。帮助将不胜感激。 问题答案: 您需要先使用NSKeyedArchiver将其

  • 1.远程执行命令 1.1 危险命令检测. gossh将危险的命令放到黑名单中,一旦远程执行危险命令,会自动退出,通过指定-f参数强制执行。危险命令目前收录如下: "mount", "umount", "rm", "mkfs", "mkfs.ext3", "make.ext2", "make.ext4", "make2fs", "shutdown", "reboot", "init", "dd"

  • 当我使用security.basic.enabled=false在具有以下依赖项的Spring Boot项目上禁用安全性时: 为了修复此异常,我必须添加属性-management.security.enabled=false。我的理解是,当执行器在类路径中时,应该将security.basic.enabled=false和management.security.enabled=false设置为禁用

  • 我试图学习JSON Web令牌(JWT),并使用在ASP.NET Web API和Identity 2.1中实现OAuth JSON Web令牌身份验证--第3部分中提供的系列文章成功地完成了一个示例。 我了解了,并喜欢使用https://JWT.io/中的JWT调试器对令牌进行解码。令牌没有加密--只是编码。 问题1与ASP.NET窗体身份验证相比,JWT的安全性如何?它是更多、更少还是相等的安

  • 客户端和服务器间的通信加密 Seafile 在服务器配置了 HTTPS 后,客户端会自动使用 HTTPS 协议和服务器通信。 加密资料库如何工作? 当你创建一个加密资料库,你将为其提供一个密码。所有资料库中的数据在上传到服务器之前都将用密码进行加密。 加密流程: 生成一个32字节长的加密的强随机数。它将被用作文件加密秘钥(“文件秘钥”)。 用用户提供的密码对文件秘钥进行加密 (使用PBKDF2算法

  • 我对maven还很陌生,如果这是一个愚蠢的问题,请向您道歉,但是在我的文件中没有一个文件看起来像文件或类似文件。 (我在#Maven IRC上问过这个问题,但没有人回应。)