我已经做了一个android应用程序,并使用Firebase实时数据库作为后端。在应用程序中,我也有一些在应用程序内购买产品。这些产品都有大量的购买积分(如150分、1000分等)。问题是,现在我看到一些用户在他们的个人资料中增加了大量的点数。考虑到firebase数据库的相对视图,我看到他们的点数增加了,比如50k,100k。但是我没有这么多的应用内购买产品。我厌倦了禁用他们的帐户&找不到阻止它的方法。
我知道一些应用程序是用来破解点数/硬币,如自由APK和其他一些。但这些应用程序需要设备扎根。因此,在App启动时,我检查了设备是否有根。现在,根设备不允许使用我的应用程序。尽管如此,他们仍然是攻击点。
我正在使用以下数据库规则
{
"rules": {
"Users": {
"$userID": {
".write": "auth != null",
".read": "auth != null"
}
}
}
}数据库结构为:
Users-
uId:
userEmail
userName
userPoints有效点数增加的工作流程为:
User buy a In-App product --> User points increase as per the product value
User watch a rewarded video ad --> User points increase by +8我想阻止这些黑客生成点数。
发布于 2019-07-13 05:22:12
我不是android和实时数据库专家,但问题是,用户有写访问数据库。
我不知道他们是怎么做的,但他们能以某种方式操纵发送到你的数据库的数据。
在将数据写入数据库之前,需要对数据进行验证。
您可以使用安全规则进行一些验证,但在我看来,最简单的方法是使用可调用的云函数来验证您的数据并撤销对数据库的写访问权限。
如果用户购买了点数,他们应该调用云函数来验证数据是否有效。如果数据有效,则云函数更新数据库。这样用户就不能操作他们的点数了。
对于我的网店,我使用云函数在结账时验证购物车内容,用户不能直接写入数据库。
你应该做一些类似的事情。
编辑:
在这里你可以找到云函数的介绍。
https://firebase.google.com/docs/functions
在这里你可以找到一些关于我推荐的可调用云函数的信息。使用可调用函数,您可以直接从代码中调用后端函数,而无需API调用。
https://stackoverflow.com/questions/57010765
复制相似问题