以安全的格式存储游戏首选项和已保存的游戏

时间:2014-12-19 12:44:45

标签: ios objective-c security sprite-kit persistence

这是Apple文档:

  

当你设计一个向游戏中心报告分数的游戏时,你应该这样做   还要考虑游戏的安全需求。你想得分   向Game Center报道要准确计算玩家的情况   是做。以下是两条建议:

     

以安全的格式存储游戏的偏好和保存的游戏,   而不是明文。如果您的游戏数据以明文形式存储   文本,玩家可以使用iTunes下载保存的游戏数据,修改   它,并将其重新同步回设备。这可能允许玩家   获得比你想象的更高的分数。总是合理的   排行榜的最小值和最大值。

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

2 个答案:

答案 0 :(得分:7)

如果黑客已经确定并拥有适当的技能,那么无论存储方法如何,您的存储数据通常都会受到影响。它归结为您的应用程序的实际应用程序以及您愿意为保证数据安全所付出的时间和精力。以下是一些供您考虑的选项:

<强> NSUserDefaults的

存储数据的最常见和最简单的方法之一。数据未加密。

Save string to the NSUserDefaults?

Plist文件

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

Storing and Retrieving from a Plist

<强> CoreData

创建模型,管理不同类型对象之间的关系。默认情况下,数据未加密。

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

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

<强>钥匙扣

可以说是在非越狱设备上存储数据的最安全方式。数据已加密。

https://stackoverflow.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 Framework

低级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

自定义方法

将数据存储在云中,从而完全消除了在设备上的数据。使用触摸ID功能对用户进行身份验证并下载云数据。

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

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

答案 1 :(得分:0)

存储您数据的最安全的地方是keychain,但如果用户使用越狱设备,它仍然不是100%安全的。遵循Apple关于设置排行榜最小值和最大值的指南。

Here's another SO post描述了如何将信息存储在NSDictionary NSData中,然后由您的应用加密和解密。