Android Firebase:防止伪造的客户端插入

时间:2018-08-06 23:29:49

标签: android firebase firebase-realtime-database firebase-authentication

我的应用中有用户通过firebase进行身份验证,并且我正在使用firebase数据库进行存储。

在视频游戏的背景下,我希望我的应用能够在玩家从游戏中获得新的游戏物品时(例如健康药水)将新的游戏物品插入游戏者的物品清单中。我已经设置了一些基本的数据库规则,以便每个用户一旦通过身份验证,就只能对其自己的清单节点进行写访问,类似于以下规则。

"$uid": {
    ".write": "$uid === auth.uid"
  }

我现在想知道此设置是否容易受到来自我应用以外的位置的欺骗请求的攻击。用户可以通过我的应用程序以外的其他方式登录并生成虚假请求,用他们喜欢的任何物品填充库存吗?我显然希望尽可能地避免这种情况。如果此设置易受类似问题的影响,那么是否存在另一种在服务器端验证数据库输入的方法?

1 个答案:

答案 0 :(得分:0)

用户总是有可能找到一种方法来验证和修改您的数据库,而不受您的应用程序代码的限制。如果要对此进行防御,则需要选择以下一项或两项:

  1. 确保您的安全规则仅允许与游戏规则兼容的写入。
  2. 在安全的后端(例如Cloud Functions)上执行游戏逻辑,以使其不会受到损害。

这是一个复杂的问题,游戏规则控制着系统约束。鉴于您的游戏规则可能非常复杂,因此您不太可能在此获得具体建议。 #2可能是您最好的选择。您可以对客户端进行编码,以向后端发出请求,以便它可以检查请求是否合法,然后从那里提交更改。