我目前正在开发一个将数据保存到SQLite数据库中的安卓游戏。这不是真正的“敏感”数据,但我不希望用户能够对其进行修改(出于游戏平衡的明显原因,因为这将是作弊)。当你的手机是以为根的时候,访问和修改SQLite数据库也是相当容易的(市场上有很多这样的应用程序)。
因此,我是否应该担心这一点,或者认为拥有根基手机的用户可以做他们想做的任何事情,包括作弊,这是他们的选择?或者我可以以某种方式对我不希望他们修改的数据进行校验和加密,或者添加一个MD5 checksum或类似的东西?
另一种方法是完全放弃SQLite,使用带有游戏数据的某种二进制文件。
请让我知道你们中的一些人是否已经遇到了类似的问题,你们遵循了什么方法,以及Android游戏开发社区中的“良好实践”。
谢谢。
发布于 2011-11-26 01:24:08
每个人的Root访问权限和安全性是相互排斥的。
任何具有root权限的应用程序或用户都可以读取和修改系统上的每个文件以及所有主内存。这样就不会留下太多地方来存储数据库的潜在加密密钥。
你可以在可执行文件、配置文件等文件中隐藏密钥的一部分,但是你能想到的任何东西都只是模糊的和安全的。
如果用户选择将root访问权限授予每个人,这是他们的决定,而您作为应用程序开发人员的工作不是为了防止可能造成的任何伤害。
更新:Storing API keys in Android, is obfustication enough?是一个非常类似的问题--它是关于保护API密钥的,但是你的选择也是一样的。
发布于 2011-11-26 01:18:02
sqlcipher for Android在这方面可能会有所帮助。
发布于 2013-12-28 17:57:35
我认为根据你的要求最好的方法是使用数据的一致性,例如MD5分数和时间,然后把分数和时间和MD5放到表中,然后每次想要使用数据库的那一行时检查分数和时间的MD5,如果数据库中的和计算出来的是相同的,那么该行是一致的,否则它就被黑了!
https://stackoverflow.com/questions/8272314
复制相似问题