Firebase的保护程度如何?

时间:2017-02-06 20:28:23

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

我很好奇,如果用户能够将任何数据写入他们具有写权限的密钥。当然,通常这是通过他们正在使用的应用程序进行身份验证来完成的。但它受保护的程度如何?如果我连接到我的wifi,我可以使用篡改数据来更改正在发送的网络活动。

如上所述:Does firebase encrypt data with a unique key per account?它表示数据在写入数据库之前已加密。然而,这不包括当键未到达时键的值改变"在Firebase。

是否可以更改监控网络活动的价值,例如篡改数据?

另外,我们说这些是一些规则:

{
  "rules": {
    "users": {
      "$uid": {
        ".read": "$uid === auth.uid",
        ".write": "$uid === auth.uid"
      }
    }
  }
}

除了使用我的应用程序之外,用户还能以任何其他方式验证自己吗?如果经过身份验证的用户有写入规则,那么直接在数据库中更改值是多么容易?

谢谢

1 个答案:

答案 0 :(得分:7)

在您提供的规则中,用户可以将任意数据写入与其自己的uid对应的节点,这只能通过使用Firebase身份验证形式登录获取(包括创建自定义令牌)使用Firebase Admin SDK的服务器端。)

100%的Firebase实时数据库流量通过TLS加密连接发送。这种交通无法在中间进行,并在飞行中改变它。

您可以信任Firebase数据库安全规则来完成它们的工作,但您需要编写可以充分保护给定应用程序用例数据的强大规则。我建议在任何地方对结构和细粒度.validate规则使用.write规则。要记住的另一个重要提示是授权是分层的。一旦.write规则与客户匹配,该节点的所有子都可以由该客户端编写。