在 Firebase Firestore 中,是否有任何方法可以将不属于路径一部分的信息传递给安全规则?

Mar*_*rcG 5 firebase firebase-security google-cloud-firestore

我想向 Firestore 数据库(Firebase)发送一些信息,最好是键值对(但不一定),以便它可以使用它来评估规则中的访问权限(读取和写入时)。

但是,我不希望此信息成为路径的一部分。

例如,假设我有一些passParameters方法:

DocumentReference docRef = 
      db.collection("cities")
        .document("SF")
        .passParameters("abc", 123);
Run Code Online (Sandbox Code Playgroud)

然后我可以在编写规则时访问这些信息,如下所示:

service cloud.firestore {
  match /databases/{database}/documents/cities/SF/ {
    allow read, write: if request.parameters.abc == 123;
  }
}
Run Code Online (Sandbox Code Playgroud)

请注意,以上只是一个示例。现实生活中的用例更加复杂。换句话说,不要过多关注示例本身,而是回答更通用的问题:是否有任何方法可以将不属于路径一部分的信息传递给安全规则?

Dou*_*son -1

这是不支持的。如果客户端可以通过查询指定它想要的任何安全参数,那么这不是一个非常“安全”的安全规则。这实际上与允许客户端传递明文密码以允许某人访问某些内容没有什么不同。我希望攻击者能够发现此类信息。