在浏览器上使用/显示Firebase uid是否安全?

时间:2017-06-12 20:02:02

标签: firebase firebase-realtime-database firebase-authentication firebase-security

我目前正在构建一个Web应用程序,我考虑使用Firebase身份验证及其数据库。我担心的是,如果用户ID在浏览器上,是否会出现任何安全问题?

例如,假设我的用户ID是12345,我想在某个页面上显示有关用户12345的一些信息。为了移动到我可以看到用户信息的某个页面,我点击一些元素(如按钮),然后转到页面。 (例如:https://localhost:9876 => https://localhost:9876/12345)在这种情况下,用户ID可见,但我不确定这是否是可靠的方法。

感谢。

编辑:我刚才注意到应该使用安全规则,这要归功于Eric的评论。但是,我不能100%确定规则是否也可用于auth对象。例如,auth对象用于获取用户ID,但是使用用户ID,是否有人可以获取存储在auth对象中的用户的电子邮件地址?例如,在上面的示例中,有人可能使用用户ID 12345获取用户12345的电子邮件地址。

1 个答案:

答案 0 :(得分:1)

保护用户相关资源的正确方法是使用Firebase ID令牌。数据库/存储规则已经依赖于这种机制。您不能只依赖提供的正确用户ID。这没有任何安全性。相反,在返回受限资源之前,您应该检查验证ID令牌并仅信任其包含UID的内容。仅供参考:Firebase管理员SDK已提供用于验证ID令牌的API。 通常,传递ID令牌的方式(如果您不使用实时数据库)如下:

  1. 单页应用:您可以调用getIdToken(),然后在向服务器发送XHR请求时,在URL查询参数,帖子正文或标题中传递最新的ID令牌。
  2. 传统网站:您必须设置会话Cookie。最简单的方法是将ID令牌设置为会话cookie,并在到期时继续更新。在后端,您将在返回用户特定资源之前验证这一点。