firebase - 为什么云函数 URL (Firebase) 可以公开访问?如何限制访问特定的外部调用?

标签 firebase authentication google-cloud-functions

<分区>

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

一切正常...很好...

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

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

我在互联网上查看了所有限制对云功能 URL 的访问的可能性,仅供可以使用它但没有说服力的用户访问。

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

希望这篇文章对以后的人有所帮助

谢谢

最佳答案

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

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


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

但是,这只有在您从您的应用调用云函数时才有意义。如果您必须通过其 URL(如“标准”REST API)调用它,这不会使事情变得更容易。

关于firebase - 为什么云函数 URL (Firebase) 可以公开访问?如何限制访问特定的外部调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56276265/

相关文章:

android - 用户 ID 在登录系统的 Activity 之间共享

javascript - AWS Cognito 身份验证返回错误 - Javascript SDK

firebase - 如何在 Cloud Function 中触发 Firestore onDelete 后删除存储在 Firebase 存储中的图像?

Firebase云函数 "Your client does not have permission to get URL/200 from this server"

firebase - 为什么在 Kotlin 中迭代 firebase 数据库时元素值添加了两次?

iOS:Firebase token 返回 null

java - 在 Spring Boot 中设置自己的安全性

javascript - 将 Firebase 与 Redux 绑定(bind)

javascript - 我无法从 firebase 注销,仍然用户不为空

google-cloud-functions - Google Cloud Functions 仅在成功时确认发布/订阅