【发布时间】:2013-11-21 19:40:57
【问题描述】:
好的,(对我来说)这是一个相当复杂的问题,让我的菜鸟脑子很疼。
在我的游戏中,有一系列特殊动作(连击)。我打算将其中大部分用于应用程序购买。此外,关闭广告将是应用内购买。
有人向我建议,玩家也应该能够通过扩展游戏来获得连击。或许可以购买在游戏中赚取他可以花费的“积分”。
在我看来,无论哪种方式,存储组合可供玩家使用这一事实的唯一方法是在“共享偏好”中存储一个指示符。
我担心共享偏好对用户干扰的脆弱性。据我了解,“共享首选项”只是一个可供任何 root 用户使用的 .xml 文件。如何阻止用户简单地访问 .xml 并将数据更改为“combo1 = true”或 credits = “1,000,000”或“ads = off”?
在写这篇文章时,我意识到我可以使用用户无法猜到的代码,而不是使用“true”或“off”之类的明显词。那会安全吗?
但是学分呢?当值可以是任何值时,如何存储用户无法猜测的值。
我想我可以使用从该值和游戏代码中的等式派生的代码来处理该值。所以在游戏中有一个方程
代码 =((学分/2)*10)+1)。
这意味着如果 credits 是 1000,那么存储在 sharedprefs 中的值必须是 50011000。因此,除非用户知道等式,否则他们将无法在 .xml 中输入有效值
这些想法有意义吗?他们会工作吗?有没有更好、更成熟的方法来做到这一点?
对不起,我是个菜鸟。
【问题讨论】:
-
您可以根据这些偏好对数据进行加密,或许可以结合当前用户 ID(Google 或您自己的)来阻止加密值的交换?