首页 > 解决方案 > Firebase 云功能安全

问题描述

我正在使用带有 admin sdk 的 firebase 云功能,以便代表用户对实时数据库执行一些操作。

例如,如果用户想在数据库中存储一个新参数,它将在其 android 客户端上按下一个按钮,该按钮依赖于一个可直接调用的函数 (onCall)。此可调用函数会将参数保存在数据库中的正确位置。

现在,我了解onCall函数在上下文参数中自动接收一些关于用户的信息,例如用户id和令牌,但我不知道这些参数是否用于控制用户的有效身份。

由于该功能是在完全权限模式下使用 admin sdk 运行的,所以我想确保用户是他声称的那个人。在一个用户窃取另一个用户的 uid 并使用此 uid 但使用自己的 Auth 令牌调用函数的情况下,他会被检测到吗?

该函数是否检查用户 ID (uid) 是否符合 Auth 令牌?

如果是,我唯一要做的就是检查 context.auth 是否与 null 不同?

标签: firebasegoogle-cloud-functionsfirebase-security

解决方案


只是从评论中移开, context.auth.uid 值是经过服务器端验证的,因此您可以相信用户没有操纵该值。(请参阅此处的代码。)现在,当您使用 firestore 或 realtime db admin API 时,该函数可以访问数据库中的任何值,因此您需要确保用户可以访问数据库中的值(即添加a 其中 uid='uid')。


推荐阅读