离线排队得分的最佳方法是稍后提交给Game Center?

时间:2011-11-04 02:09:20

标签: objective-c ios security gamekit

具体来说,我想知道我是应该创建一个GKScore还是将得分值保存在我自己的对象中。无论哪种方式,我都会将得分对象保存为.plist文件,以防应用程序终止,然后才能将得分成功提交给游戏中心服务器。

将其保存为GKScore可能有一个优势,因为日期可能会保留,但更重要的是,GKScore是否更具防篡改功能?我希望找到可以直接修改保存文件的骗子,从而在提交给游戏中心之前修改他们的分数。

更新:在仔细阅读Game Kit Programming Guide之后,它告诉我们在iOS 4中,重新报告的分数会留给您的应用;但是,在iOS 5中,这由后台的报告任务自动处理。因此,这个问题只与iOS 4真正相关(我和其他大多数人仍然计划完全支持)。

2 个答案:

答案 0 :(得分:1)

无法使此功能安全,因为这是对CWE-602的隐式违规。如果将值存储在闪存或随机存取存储器中,则无关紧要,在一天结束时,用户可以比您更多地控制设备。作为开发者,你是一位客人,你应该玩得很好。也许你正在寻找“(in)security though obscurity”。

答案 1 :(得分:1)

我讨论的时间有点迟了......

Apple Game Technologies Evangelist的Allan Schaffer在Game Center Essentials讲座中简要讨论了这个话题。这是2011年发布给iTunes U的。

在22:30左右,讨论转向归档GKScore对象以供日后提交。为了限制作弊,建议是:

  • 将校验和添加到文件
  • 在分数中添加哈希值
  • 将分数限制提交到已知“有效”金额