auth是多么安全!== null?火力

时间:2017-07-19 15:41:45

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

我已经使用Firebase很长一段时间了,但我现在才决定真正研究安全规则。

我的问题是,“auth!== null”的安全性如何?是的,我意识到这意味着只有经过身份验证的用户才能访问数据,但进行身份验证有多容易?有人可以注册该应用程序,然后使用这些凭据在我的数据库中获取请求吗?

就像我说的,我是安全规则的新手,所以如果这是一个明显的问题,我很抱歉。

这是我的安全规则:

{
  "rules": {
    "Users": {
      "$user_id": {
        ".write": "$user_id === auth.uid",  
        ".read" : "auth !== null",
        "shoofers" : {
          ".write" : "auth != null"
        }
      }
    }
  }
}

谢谢!

尼尔

3 个答案:

答案 0 :(得分:5)

用户可以通过匿名,电子邮件/密码,各种OAuth提供商和电话号码登录进行身份验证。您可以启用/禁用其中任何一个。上面的根规则允许通过任何规定的机制对任何经过身份验证的用户进行只读访问,并将指定用户的访问权限写入自己的数据。伪造登录非常困难。数据库将始终检查请求是否具有ID令牌(当auth不为null时)。 ID令牌使用公钥加密,并且在没有私钥的情况下很难伪造。

答案 1 :(得分:4)

您可以在登录身份验证或外出身份验证后授予用户访问数据库的权限。 但允许用户使用身份验证访问您的数据库是好的和安全的

具有身份验证安全规则

  {
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

且无需身份验证

     {
  "rules": {
    ".read": "auth == null",
    ".write": "auth == null"
  }
}

答案 2 :(得分:-1)

我所看到的是,当您通过Firebase控制台使用“模拟器”并通过提供一些随机字符串作为uid来进行虚假身份验证时,firebase不会对其进行检查并允许访问。因此auth!= null还不够,因为即使uid = 1,它也会进行身份验证。