与用户一起保护 Firebase CRUD 操作



由于AngularFire文档很薄,而且它与Firebase的默认Web文档之间存在差异,我对如何最好地保护用户的创建,读取,更新和删除操作有点迷茫。

简而言之,假设我有一个管理商店的应用程序。用户可以是商店的所有者或顾客。所有者应该在他们的视图中阅读和编辑自己的商店,顾客应该阅读所有商店,但不要编辑他们视图中的商店。

我担心Firebase文档建议的方法的安全性,例如

例如,我们可以有如下规则来允许用户 创建注释,只要它们使用 评论:

{
  "rules": {
    ".read": true,
    "$comment": {
      ".write": "!data.exists() && newData.child('user_id').val() == auth.id"
    }
  }
}

对我来说,这意味着当我想以受害者的身份发表评论时,我可以通过简单地传入受害者的用户 ID 来破解我应用程序的数据。我错了吗?

我已经彻底阅读了安全文档,好几遍。我想我需要在这里进一步解释。到目前为止,通过客户端公开的参数进行识别是我能找到的唯一方法。

在此处显示的示例中,auth 是指经过身份验证的用户的令牌数据。这是 Firebase 在 auth() 事件期间设置的特殊变量,因此不是您可以在客户端破解的东西。换句话说,只有将user_id值设置为您自己的帐户 ID 时,才能编写注释。

auth对象的内容取决于客户端的身份验证方式。例如,SimpleLogin 的密码提供程序将以下内容放入身份验证令牌中:provideremailid ;其中任何一个都可以在安全规则中使用。

也可以从服务器签署自己的令牌,当然天空是这里的极限。

但最重要的是,令牌的内部值由受信任的进程提供,而不是由客户端提供,因此用户无法更改。

最新更新