如果我理解正确:NSUserDefaults是一个存储敏感数据的不安全的地方,因为某些设置文件可能被黑客入侵,并且NSUserDefault值可以更改。
究竟什么可以被黑客攻击而不是黑客攻击?黑客可以看到我的应用程序的Swift代码,还是只看到存储在NSUserDefaults中的变量和值列表?
我可以在我的代码中创建自己的“加密”(其中NSUserDefault值看起来像一堆无意义的数字,并且“密钥”在我的代码中,并且需要进行一些复杂的数学运算)?这样安全吗?
注意:我不打算加密任何严重的用户名或密码,只是Highscores和Bool值,无论是否解锁级别/升级。如果我的手动解决方案是安全的,我不想学习KeychainsWrappers。
附带问题(虽然我尚未达到此步骤):如何处理应用内购买?是否有一个Bool值表示是否支付了一个项目,以及Bool存储的位置(由您自行决定)?
答案 0 :(得分:5)
究竟什么可以被黑客攻击而不是黑客攻击?
你可以做的大部分事情都可以被黑客攻击。
黑客能否看到我的应用程序的Swift代码,他们只看到变量列表
复杂的黑客可以看到可执行的二进制文件,但不能看到Swift源代码。
存储在NSUserDefaults中的值?
看到NSUserDefaults的内容是微不足道的。请参阅iExplorer和其他类似应用。
我可以在我的代码中创建自己的“加密”
当然可以,但是你呢?
"Schneier's Law":“从最无能的业余爱好者到最好的密码学家,任何人都可以创建一个他自己无法破解的算法。”
这样安全吗?
不,这不安全。如果要使用加密,则需要使用标准加密算法(如AES),但创建安全方案并不容易。您可以使用诸如RNCryptor之类的包装器库。但是这会产生一个新问题:在哪里安全地保存加密密钥,请参阅下一点。
如果我的手动解决方案是安全的,我不想学习KeychainsWrappers。
只有您想要安全地保存密钥和少量数据。安全很难。
您需要评估所需的安全级别,包括攻击者级别和数据值。攻击者从好奇的学生到民族国家。数据值从Tic-Tac-Toe高分到核武器细节。您需要先确定这些。
答案 1 :(得分:0)
NSUserDefaults只是存储在设备文件系统中的plist。它唯一的安全'是人们必须进入设备文件系统才能到达它,这并不是特别困难。
根据应用购买中的苹果文档:
在推出产品后,您的应用需要持续记录购买情况。
您可以在有关保留购买的部分中阅读更多信息,但请忽略可以使用用户默认设置的部分。
如果您不知道自己在做什么,我也无法推荐使用您自己的安全存储系统。
以上假设您正在谈论应用购买。如果您正在谈论用户本地的内容,那么如果他们破解您的应用程序真的很重要吗?假设您有一个系统,您必须击败上一级才能解锁下一级别。如果有人编辑默认设置以解锁下一关,谁真正关心。这不是他们必须付出的代价,因此它不会影响您的收入来源。事实上,我认为只要不影响你的收入或其他玩家,允许真正想欺骗的人这样做会更好。