我已经阅读了许多不同的帖子,线程等,关于存储游戏应用程序中使用的级别数据的最佳实践(级别边界数据、图像、字符、时间等)。
Property List (.plist)是适当的,因为它是相当简单的存储游戏信息,然后在需要时阅读它。虽然这很容易创建和引用,但是除了简单的plist加密字符串内容之外,文件在任何方面都不是安全的。LevelData.m,并直接引用类读取级别数据,因为以这种方式存储数据应该“更安全”,因为(据我所知)用户在应用程序打包和分发后无法直接或完全访问这些类文件,比如iOS应用商店。我的问题,谁能建议最好的方法,或者也许是一个我没有提到的?是的,我知道它们都是保存大数据的非常有效的方法,特别是需要读取的非琐碎的、有点重复的数据,而且在安全措施方面都有各自的优缺点。我只是试图找到最安全的方法来存储这些数据,而不会让用户从可能遇到类似问题并找到理想解决方案的人那里以任何方式篡改这些数据。
注意:我确信托管此数据服务器端并在应用程序启动时检索数据将是理想的安全方法。然而,我只是想看看哪种方法应该是在安全性方面的最佳实践,严格地通过在设备上存储数据。谢谢!
发布于 2016-01-26 16:56:15
如果您不信任用户,那么如何对不信任的数据进行签名,并使用公钥加密(在二进制文件中使用固定证书)验证签名?
因此,只能使用来自您的有效签名的数据。
但是,毕竟,如果用户删除二进制文件并修改公钥,这也是行不通的。
和以往一样,问题是:你让对手打破你的安全措施有多难--有多难呢?
发布于 2016-01-27 16:36:53
我知道您已经得到了答案,但我个人在NSCoding中使用了一个NSCoding Singleton类。我将编码/存档的数据保存到iOSs的密钥链中(而不是NSUserDefaults、NSBundlePath等)。
要保存到密钥链中,可以使用此助手
https://github.com/jrendel/SwiftKeychainWrapper
这是我在应用程序中使用的。它的工作原理非常类似于NSUserDefaults,因此非常容易使用。
您还可以在这里获得更复杂和更丰富的特性。
https://stackoverflow.com/questions/35018675
复制相似问题