用户删除时,Firebase身份验证未撤消?

时间:2013-10-15 09:02:17

标签: firebase firebase-security

我遇到了使用电子邮件/密码进行Firebase简单登录的奇怪行为: 如果我使用现有用户帐户登录,我可以写入Firebase ref(即$ root / list / $ item)。 如果没有,我没有按预期的写访问权限(Firebase规则似乎没问题), 但是,如果客户端已登录,并且同时从Firebase Forge(身份验证页面)删除用户,则已连接的客户端仍具有对Firebase ref的写入权限! 它是设计还是错误? 感谢。

以下是规则:

{
  "rules": {
    ".read": true,
    "list": {
      "$item": {
        ".write": "auth != null && newData.child('author').val() == auth.id",
        ".validate": "newData.hasChildren(['author', 'content'])",
        "author": {
          ".validate": "newData.val() == auth.id"
        },
        "content": {
          ".validate": "newData.isString()"
        }
      }
    }
  }
}

1 个答案:

答案 0 :(得分:10)

简短回答:按设计,或更准确,在这种情况下不适用。

在身份验证期间,FirebaseSimpleLogin会生成令牌。将令牌提供给客户端后,它将一直有效,直到它过期。因此,当您在简单登录中删除用户帐户时,这不会以某种方式转到客户端的计算机并删除令牌。这是一个非常标准的auth模型,令牌上的到期长度(可在Forge中配置)是安全性的关键约束。

如果您想立即撤消登录,那么简单登录就不是该作业的正确工具。您需要使用custom login并生成自己的令牌。有一些很棒的discussions on revokable tokens,所以我会把你推迟给那些人,因为那不在你的问题的范围内。