Firebase验证规则。如何使规则生效?

问题描述 投票:0回答:1

Firebase中的数据具有以下结构:

emailsLending
|___-LqQFYK-iI8a8qe2msVk
    |___email
    |___serverTimestamp

我编写了以下规则来检查电子邮件字段中的条目:

{
  "rules": {
    "emailsLending": {
      "$emailsLending_id": {
        ".indexOn": "email",
        "email": {
          ".validate": "newData.isString() && newData.val().matches(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i)"   
        }
      }
    }
  }
}

但是当我使用Cloud Function将数据写入电子邮件字段时,该规则将不适用,并且我可以写入任何内容,例如“ 123”。

我在做什么错?

firebase firebase-realtime-database firebase-security-rules
1个回答
0
投票
Cloud Functions以管理特权运行,默认情况下绕过数据库的安全规则。

这里的逻辑是,规则应防止不受信任的用户进行恶意行为,而Cloud Functions是由最受信任的用户(即应用程序上的协作者)创作的。为了发现这些类型的用户所犯的错误,通常使用单元测试代替安全规则。

如果遇到这种情况,则该逻辑不适用,而您正在使用实时数据库,则可以将databaseAuthVariableOverride设置为用户的UID来运行代码。有关此示例,请参阅accessing user authentication information上的Firebase文档。

© www.soinside.com 2019 - 2024. All rights reserved.