Firebase函数如何在没有管理员权限的情况下访问Firestore



我想实现一个可调用的Firebase云功能来修改Firestore上的现有文档。当我在网上搜索时,我发现我需要向我的服务器添加管理员权限,然后像这样调用它:

const admin = require('firebase-admin');
admin.initializeApp();
const db = admin.firestore();

但是在文档(https://firebase.google.com/docs/admin/setup)中,它说admin SDK赋予特权来操纵Firebase平台中的基本上所有东西。我不想给函数调用或服务器提供所有特权。如果我调用一个与User collection相关的函数,我希望该函数只能操作User collection.

我的问题是:给一个函数所有的特权是安全的吗?逆向工程有危险吗?如果是这样,我如何阻止非合法的函数调用?是否可以限制对firebase函数的访问?

云功能不能逆向工程。他们在一个安全的环境中运行。管理员SDK绕过所有安全规则,但授权传入请求是您的责任。如果您使用onCall函数,Firebase将在上下文对象中添加调用者的验证信息,如UID和自定义声明。

也就是说,您只需要运行如此简单的if-else逻辑来拒绝恶意请求。例如,呼叫方是A,但正在请求B的数据,您可以拒绝该请求。

请注意,如果你正在使用onRequest函数,那么你将传递ID令牌,在云函数上验证它,即不会有上下文。默认为Auth对象。

此外,您可以使用Firebase App Check来确保请求仅从您的应用程序触发。

相关内容

  • 没有找到相关文章

最新更新