今天,我在Firestore上有以下规则:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth.uid != null;
}
}
}
我无法执行来自我的API的请求,因为它没有登录(是否有任何方法只能通过CLI进行身份验证?)。但是我想确保只有我的API发出这些请求。
是否可以在请求中添加特定标头并根据Firebase规则进行验证?
如果这不是最好的方法,那是哪个?
上下文: -仅通过Google提供程序使用身份验证。
答案 0 :(得分:0)
只有我的API发出这些请求
对于像这样的Cloud托管API,这是不可能的。由于任何客户端都必须能够进行此类调用,因此所有配置信息都必须存在于您交付给用户的客户端中。这意味着恶意用户可以获取该配置数据并进行自己的(等效或完全不同)调用。
添加自定义标头(如果可能)也无济于事,因为他们可以轻松地获取该标头并在自己的请求中使用它。因此,尽管有很好的用例向请求添加其他数据,但增加的安全性并不是其中之一。
您可以(并且应该)做的是验证写入数据库的任何数据均符合应用程序的业务需求。不要依靠客户端代码来做正确的事,而要在您的安全规则中验证传入数据是否有效。
有关更多信息,请参见: