首页 > 解决方案 > 为什么云函数 URL (Firebase) 可以公开访问?如何限制对特定外部呼叫的访问?

问题描述

我正在使用 Firebase 来发送推送通知,使用 Firestore 数据库来存储用户信息和发送通知,以及一个云功能,它将与外部 API 调用交互以执行任务。

一切都很好......很好......

事实上,当我在没有经过身份验证的情况下调用云函数 URL 时,它可以工作。最糟糕的是:当我在 Google 上输入云函数 URL 时,它可以工作并返回我的 Firestore 数据库元素!

所以 URL 云函数是 PUBLIC,如果有人找到了 URL 云函数,他就可以访问 Firestore 数据库并可以在其中读写。

我在互联网上查看了所有限制对云功能 URL 的访问的可能性,仅限于可以使用但没有任何吸引力的用户。

有人可以帮我找到这个关键问题的适当解决方案吗?

希望这篇文章能在未来对某人有所帮助

谢谢

标签: firebaseauthenticationgoogle-cloud-functions

解决方案


您将在官方 Cloud Function Samples 列表中找到有关如何“将 HTTPS 功能限制为仅限您应用的 Firebase 用户”的示例。

见这里: https ://github.com/firebase/functions-samples/tree/master/authorized-https-endpoint


另一种可能性是将您的 HTTP 云函数转换为可调用函数。如文档中所述,“使用可调用对象、Firebase 身份验证和 FCM 令牌(如果可用)会自动包含在请求中。”

但是,这仅在您从 app调用 Cloud Function 时才有意义。如果您必须通过其 URL(如“标准”REST API)调用它,这不会让事情变得更容易。


推荐阅读