Android:如何保护SQLite数据库中的数据?

时间:2011-11-25 17:15:33

标签: android sqlite encryption protection

我目前正在开发一款将数据保存到SQLite数据库中的Android游戏。这不是真正的“敏感”数据,但我不希望用户能够修改它(出于游戏平衡的明显原因,因为它会作弊)。当您的手机植根时,访问和修改SQLite数据库非常容易(市场上有很多应用程序)。

我是否应该担心这一点,或者考虑使用带有根电话的用户可以做任何他们想做的事情,包括作弊,这是他们的选择?或者我可以以某种方式加密我不希望他们修改的数据,或添加 MD5校验和或类似的东西?

另一种方法是完全放弃SQLite并使用某种二进制文件和游戏数据。

如果你们中的一些人已经遇到类似的问题,你们采取了哪些方法,以及Android游戏开发社区中的“良好做法”,请告诉我。

感谢。

4 个答案:

答案 0 :(得分:5)

每个人的root访问权限和安全性是互斥的。

任何具有root权限的应用程序或用户都可以读取并修改系统上的每个文件以及所有主内存。这并没有让很多地方为数据库存储潜在的加密密钥。

你可以在可执行文件,配置文件等中隐藏密钥的一部分,但是你能想到的一切只不过是模糊不清和安全隐患。

如果用户选择向所有人授予root访问权限,那就是他们的决定,而不是作为应用程序开发人员的工作来防止可能造成的任何伤害。

更新: Storing API keys in Android, is obfustication enough?是一个非常类似的问题 - 它是关于保护API密钥的,但是与您的选项相关的情况也是如此。

答案 1 :(得分:3)

Android版sqlcipher可能会有所帮助。

https://guardianproject.info/code/sqlcipher/

答案 2 :(得分:2)

我认为根据您的要求,最好的方法是使用数据的一致性, 例如MD5得分和时间,然后将得分和时间以及MD5放入表中,然后每次想要使用该行的DB检查得分和时间的MD5,如果DB中的那个和计算的那个是相同的,行是一致的,否则它被黑了!

答案 3 :(得分:-1)

您可以在首选项文件中找到您的快乐here