【问题标题】:Firebase HTTPS callable functions being called by unauthenticated end users未经身份验证的最终用户正在调用 Firebase HTTPS 可调用函数
【发布时间】:2020-03-14 09:39:11
【问题描述】:
【问题讨论】:
标签:
firebase
firebase-authentication
google-cloud-functions
【解决方案1】:
确实validate 为您提供了身份验证令牌,但您的函数对这些身份验证令牌所做的事情是函数的。通过验证它们,框架可以确保无效的身份验证令牌看起来不像是经过身份验证的用户。
值得注意的是,the documentation 表示:
借助可调用对象,Firebase 身份验证和 FCM 令牌(如果可用)会自动包含在请求中。
您的问题的关键是可用时。
如果验证请求是否经过身份验证对您很重要,那么您需要检查 firebase 在 context 参数中提供的变量。 (请参阅传入的CallableContext 对象的API definition。您可以提取诸如uid 之类的东西(如函数第二个参数上的auth.uid)等。
简而言之,这个函数肯定会被执行,它是否对未经身份验证的用户执行任何操作取决于它是如何编写的。
您可以放心地期望调用本身仍计入您的免费套餐配额或计费调用 - 根本没有任何内容表明可调用函数必须经过身份验证,并且有很多可能用于未经身份验证的可调用函数(例如,您希望保护数据库的某个部分只能由服务器端代码访问,即使未经身份验证的用户运行它也是如此)。