以安全格式存储游戏偏好和保存的游戏

这是从苹果文档:

当您devise一个向Game Center报告分数的游戏时,您还应该考虑游戏的安全需求。 您希望报告给Game Center的分数是玩家如何做的准确logging。 这里有两点build议:

以安全的格式存储游戏的偏好和保存的游戏,而不是以明文forms存储。 如果您的游戏数据以明文forms存储,玩家可以使用iTunes下载已保存的游戏数据,对其进行修改,然后重新同步到设备。 这可能会让玩家获得比你想要的更高的分数。 始终为排行榜设置合理的最小值和最大值。

我知道数据可以存储在.plist文件或.xml或.json中,即使在数据库中也是如此。 但所有这些都是非encryption的纯文本。 什么被认为是一个安全的格式? 还有什么方法/类/技术可以用来存储敏感数据?

如果黑客确定了足够的技能并拥有适当的技能,那么无论存储方法如何,您的存储数据通常都会受到影响。 这归结于您的应用程序的真实世界应用程序,以及您愿意投入保持数据安全的时间和精力。 以下是您可以考虑的一些选项:

NSUserDefaults的

存储数据的最常见和最简单的方法之一。 数据不被录入。

保存string到NSUserDefaults?

Plist文件

也是存储数据的常用方法。 数据未encryption。

从Plist中存储和检索

CoreData

创build一个模型,pipe理不同types的对象之间的关系。 默认情况下,数据不encryption。

http://www.appcoda.com/introduction-to-core-data/

http://www.raywenderlich.com/85578/first-core-data-app-using-swift

钥匙扣

可以说是将数据存储在非越狱设备上最安全的方式。 数据被encryption。

https://stackoverflow.com/questions/16459879/how-to-store-a-string-in-keychain-ios

NSCoding

正如旋风所指出的那样,这又是一种存储方法。

http://www.raywenderlich.com/1914/nscoding-tutorial-for-ios-how-to-save-your-app-data

http://nshipster.com/nscoding/

CommonCrypto Apple框架

低级C编码。 数据被encryption。

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

自定义方法

从而将数据存储在云端,从而消除设备上的干扰。 使用触摸IDfunction对用户进行身份validation并下载云数据。

http://code.tutsplus.com/tutorials/ios-8-integrating-touch-id–cms-21949

https://developer.apple.com/library/ios/samplecode/KeychainTouchID/Introduction/Intro.html

存储数据最安全的地方在于钥匙串 ,但是如果用户使用的是越狱设备,它仍然不是100%安全的。 按照Apple的指南设置排行榜的最小值和最大值。

这里是另一个SOpost,描述如何将信息作为NSData存储在NSDictionary中,然后由你的应用encryption和解密。