想象一下我有一个游戏,我需要为每个用户保存数据,比如关卡、高分、金币……
如果我在本地(在用户的设备上)保存了其中的一些数据,它们就不是很安全,可以修改由具有根设备和一点技能的用户。(如此处所讨论)
所以我需要将它们放在我服务器上的数据库中——我会使用 web 服务和 JSON 连接到它。
但后来我意识到这并不安全:如果有人能得到我的 APK,他可以反编译它,获取用于发布高分的代码,然后将其编辑为始终发布 1,234,567(然后再次编译)或直接提取它并张贴任何高分。
在高分的情况下,这不是一个大问题 - 但有了这个,基本上可以获取/发布应用程序中使用的任何内容。
我怎样才能保护我的应用程序/数据库免受此影响?
我的想法:
- 加密我发布的所有内容:无法工作,因为加密发生在设备上
- 用数据库中的种子加密我发布的所有内容:因为“黑客”也可以获得种子,而不是更安全
- 为每个连接生成一个密钥:与第一个相同
一句话: 只要“黑客”可以反映我的应用程序的行为,有没有办法确保与我的数据库的连接实际上是由我的应用程序而不是其他人打开的?