以安全格式存储游戏偏好和保存的游戏
Posted
技术标签:
【中文标题】以安全格式存储游戏偏好和保存的游戏【英文标题】:Storing game preferences and saved games in a secure format 【发布时间】:2015-02-18 09:57:51 【问题描述】:这是来自 Apple 文档:
当您设计一款向 Game Center 报告分数的游戏时,您应该 还要考虑游戏的安全需求。你想要分数 向游戏中心报告,以准确记录玩家如何 是做。这里有两个建议:
以安全的格式存储您的游戏偏好和保存的游戏, 而不是明文。如果您的游戏数据以明文形式存储 文本,玩家可以使用iTunes下载保存的游戏数据,修改 它,并将其重新同步回设备。这可能会让玩家 获得比您预期更高的分数。始终设置合理 排行榜的最小值和最大值。
我知道数据可以存储到 .plist 文件或 .xml 或 .json 中,甚至可以存储在数据库中。但所有这些都是未加密的纯文本。什么被认为是安全格式?还有哪些方法/类/技术可用于存储敏感数据?
【问题讨论】:
【参考方案1】:如果黑客有足够的决心并拥有适当的技能组合,那么无论采用何种存储方式,您存储的数据通常都会遭到破坏。它归结为您的应用程序的实际应用程序是什么,以及您愿意投入的时间和精力来保证数据的安全。以下是一些可供您考虑的选项:
NSUserDefaults
存储数据的最常见和最简单的方法之一。数据未加密。
Save string to the NSUserDefaults?
Plist 文件
也是一种常用的数据存储方式。数据未加密。
Storing and Retrieving from a Plist
核心数据
创建模型,管理不同类型对象之间的关系。默认情况下,数据未加密。
http://www.appcoda.com/introduction-to-core-data/
http://www.raywenderlich.com/85578/first-core-data-app-using-swift
钥匙串
可以说是在非越狱设备上存储数据的最安全方式。数据已加密。
https://***.com/questions/16459879/how-to-store-a-string-in-keychain-ios
NSCoding
正如 Whirlwind 指出的,这是另一种存储方法。
http://www.raywenderlich.com/1914/nscoding-tutorial-for-ios-how-to-save-your-app-data
http://nshipster.com/nscoding/
CommonCrypto Apple 框架
低级 C 编码。数据已加密。
https://developer.apple.com/library/ios/documentation/Security/Conceptual/cryptoservices/GeneralPurposeCrypto/GeneralPurposeCrypto.html
https://developer.apple.com/library/ios/samplecode/CryptoExercise/Listings/ReadMe_txt.html
自定义方法
将数据存储在云中,从而完全避免将其保存在设备上。使用 Touch ID 功能对用户进行身份验证并下载云数据。
http://code.tutsplus.com/tutorials/ios-8-integrating-touch-id--cms-21949
https://developer.apple.com/library/ios/samplecode/KeychainTouchID/Introduction/Intro.html
【讨论】:
您可以添加评论,如果您愿意,也可以使用这种方法(NSCoding)来提高答案质量raywenderlich.com/1914/… @Whirlwind - 出色的补充。我已将其包含在答案中。【参考方案2】:存储数据最安全的地方是keychain,但是如果用户使用的是越狱设备,它仍然不是 100% 安全的。遵循 Apple 关于为排行榜设置最小值和最大值的指南。
Here's another SO post 描述了如何将信息存储在NSDictionary
中作为NSData
,然后由您的应用加密和解密。
【讨论】:
嗨 huhitschris,感谢您的快速回复。这不仅仅是关于高分和排行榜。它涉及许多价值,即虚拟货币、玩家升级等。因此定义最小/最大值是不合适的。我将阅读有关加密的 NSData 方法并尝试查看结果。如果这不是问题,您可以发布一些用于钥匙串实现的代码吗? 钥匙串与您的密码一样安全,无论是否越狱。使用更长的密码是获得更高安全性的方法。以上是关于以安全格式存储游戏偏好和保存的游戏的主要内容,如果未能解决你的问题,请参考以下文章
寻找管理游戏关卡视图、关卡选择视图、偏好视图、存储关卡、环境变量的概念