就像我们在访问firestore数据库之前编写安全规则一样,我们可以在请求云功能firebase之前编写安全规则以保护它免受滥用吗?另一个相关的问题是appcheck工作在调用之前工作吗?或者我明确地写context.app.
我们可以在请求云功能firebase之前编写安全规则来保护它不被滥用吗
云功能没有任何安全规则。您必须显式地验证传入请求,并检查调用方是否被授权执行操作。这是必要的,因为云功能使用Admin SDK,该SDK具有访问Firebase项目的特权,并且也不遵守安全规则。
exports.yourCallableFunction = functions.https.onCall((data, context) => {
// verify context.app
if (!context.app) return null;
const {uid, token} = context.auth
// check if this user is authorized to perform requested action
// you can access custom claims from the token object
})
请注意,这将消耗调用和CPU使用时间。您应该尽早终止垃圾邮件请求。
appcheck是否在调用之前工作,或者我已经明确地写了context.app.
您需要显式检查context.app
。如果请求不包含文档中提到的有效的App Check令牌,则未定义。
if (context.app == undefined) {
throw new functions.https.HttpsError(
'failed-precondition',
'The function must be called from an App Check verified app.')
}