【问题标题】:Is there a way for Firebase Functions to protect an HTTP Endpoint using domain verification?Firebase 函数有没有办法使用域验证来保护 HTTP 端点?
【发布时间】:2020-04-01 23:55:00
【问题描述】:
这就是我想要实现的目标:我有一个使用 Firebase 托管托管的静态网站,并且它有一个 Google 表单。单击提交按钮后,我还想向用户发送一封电子邮件,确认我们收到了表单。我使用 HTTP 端点编写了一个 Firebase 函数。但是,该端点向公众公开。有什么办法可以保护这个功能?我知道我们可以对登录用户进行身份验证,但我不需要访问者创建帐户来提交表单。
谢谢!
【问题讨论】:
标签:
javascript
firebase
http
firebase-authentication
google-cloud-functions
【解决方案1】:
Firebase CLI 部署的 HTTP 触发器始终可供任何具有互联网连接的人访问。 Google Cloud 提供了唯一的访问控制来限制 IAM 的访问,这在这里对您没有帮助。
您应该做的是保护端点只能由使用 Firebase 身份验证登录的用户访问。这方面的例子很多。
Callable functions 还可以方便地检查最终用户在调用时是否经过身份验证。
【解决方案2】:
另一种可能是使用req.headers["x-forwarded-for"] 来比较请求的源IP 地址。它不完全是域检查,因为 TCP/IP 不知道 DNS,但它仍然可以与反向查找(或简单的 IP 地址列表)结合使用。这取决于场景(函数实际执行的操作),因为这在未经身份验证的情况下也可以工作。它来自哪里与谁......请注意,无法区分同一 IP 地址上的另一个 Firebase 托管,但它会排除来自客户端的直接访问。