【发布时间】:2021-08-20 07:06:15
【问题描述】:
就像我们在访问 firestore 数据库之前编写安全规则一样,我们是否可以在请求云函数 firebase 之前编写安全规则以保护它免受滥用,另一个相关问题是 appcheck 在调用之前是否工作或者我已经明确编写了 context.app .
【问题讨论】:
标签: firebase google-cloud-platform google-cloud-functions
就像我们在访问 firestore 数据库之前编写安全规则一样,我们是否可以在请求云函数 firebase 之前编写安全规则以保护它免受滥用,另一个相关问题是 appcheck 在调用之前是否工作或者我已经明确编写了 context.app .
【问题讨论】:
标签: firebase google-cloud-platform google-cloud-functions
我们可以在请求云功能 firebase 之前编写安全规则以保护其免受滥用
云功能没有任何安全规则。您必须明确验证传入请求并检查调用者是否有权执行这些操作。这是必要的,因为 Cloud 函数使用 Admin 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。如果请求不包含documentation 中提到的有效应用检查令牌,它将是未定义的。
if (context.app == undefined) {
throw new functions.https.HttpsError(
'failed-precondition',
'The function must be called from an App Check verified app.')
}
【讨论】: