我想创建一个数据库来存储我的游戏中玩家的分数。如果玩家获胜,他的分数将在数据库中为+1。我将使用Firebase实时数据库。但是安全吗?
假设我的逻辑是:
if (player.wins()) {
increaseScore();
}
else {
reduceScore();
}
/// recrementScore()和reduceScore()只是更新数据库中得分的代码。
但是问题是:如果有人打开我的游戏源代码,然后将其更改为:
if (player.wins()) {
reduceScore();
}
else {
increaseScore();
}
这是作弊。任何人都可以这样破坏我的Firebase数据库吗? 还是只有我签名的APK可以访问它?
答案 0 :(得分:0)
即使他们进行了更改,他们也将无法发布具有相同包装名称和其他详细信息的商店。尝试也存储apk的哈希键,并且在运行时也可以检查哈希键。即使他们将其发布在其他商店上,也将无法使用您的服务。
谈论火力基地是安全的,许多知名公司都在使用它。您只需要添加身份验证规则以使其更安全并仅提供经过身份验证的访问即可。
在此了解更多信息。
https://firebase.google.com/docs/database/security
Is there any way to get key hash from signed APK?
https://proandroiddev.com/secure-data-in-android-encryption-in-android-part-1-e5fd150e316f
答案 1 :(得分:0)
任何人都可以这样破坏我的Firebase数据库吗?
是的,全世界任何人都可以读写您的数据库。为此,恶意人员只需知道您的Firebase项目的名称即可。此名称实际上存在于您的应用程序中。您可以随时通过简单地更改if语句甚至更糟来期望您当前正在对游戏进行反向设计和更改。
为防止这种情况,您应该使用Firebase realtime database security rules保护数据库。这是您拥有对数据库的完全控制访问权限的唯一方法。
还是只有我签名的APK可以访问它?
否,客户端应用程序或REST API可以直接访问数据库。我认为,仅使用应用程序中存在的代码来尝试保护对数据库的访问并不是一个好主意。
将玩家的数据存储在Firebase数据库上是否安全?
是的,但是在启动应用程序之前,请确保正确设置了安全规则。