【发布时间】:2011-06-03 12:32:13
【问题描述】:
我们可以使用 sqlite、nsuserdefaults 或普通文件系统在 iPhone 上保存游戏数据。这些数据通常存储在 Documents 目录中,但 Documents 目录下的文件可以轻松修改而无需 JailBreak。 (其实之前有些作弊的分数已经发到服务器了)
我考虑了一些通过修改保存数据来防止作弊的想法。
加密文件
只需加密数据文件并在读取时解密。看起来很安全,但如果游戏需要频繁更新游戏数据,就会牺牲性能。
SQLite 加密
有一些用于 sqlite 的加密扩展库。问题在于成本和许可证。
验证器/校验和
存储已保存数据的校验和并使用它检测作弊。如果保存校验和由于某种原因失败,可能会导致 FALSE POSITIVE 结果。
钥匙链
将数据存储到钥匙串中。但是我们不能使用 sqlite。大数据可以存储在钥匙串中吗?
每个想法都有缺陷。你能给我一些想法吗?
【问题讨论】:
-
为什么校验和会失败?顺便说一句,即使没有狗,只要张贴一个标有“小心狗”的标志,就会让很多人远离。标有“作弊者将被排除在游戏之外”的标签可能会有所帮助,而且不会花费任何费用。
-
我会对数据库进行校验和并将该值存储在钥匙串中,然后在启动时验证钥匙串 = db 校验和,从后台返回等。
-
如果我们以非原子方式保存数据和校验和,校验和将失败。我们需要交易基础设施来做到这一点。
标签: iphone