如何让特定的API在Firestore上运行写入/读取请求?

时间:2019-01-31 12:05:31

标签: firebase google-cloud-firestore firebase-security-rules

今天,我在Firestore上有以下规则:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth.uid != null;
    }
  }
}

我无法执行来自我的API的请求,因为它没有登录(是否有任何方法只能通过CLI进行身份验证?)。但是我想确保只有我的API发出这些请求。

是否可以在请求中添加特定标头并根据Firebase规则进行验证?

如果这不是最好的方法,那是哪个?

上下文: -仅通过Google提供程序使用身份验证。

1 个答案:

答案 0 :(得分:0)

  

只有我的API发出这些请求

对于像这样的Cloud托管API,这是不可能的。由于任何客户端都必须能够进行此类调用,因此所有配置信息都必须存在于您交付给用户的客户端中。这意味着恶意用户可以获取该配置数据并进行自己的(等效或完全不同)调用。

添加自定义标头(如果可能)也无济于事,因为他们可以轻松地获取该标头并在自己的请求中使用它。因此,尽管有很好的用例向请求添加其他数据,但增加的安全性并不是其中之一。

您可以(并且应该)做的是验证写入数据库的任何数据均符合应用程序的业务需求。不要依靠客户端代码来做正确的事,而要在您的安全规则中验证传入数据是否有效。

有关更多信息,请参见: