0

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

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

谢谢。


编辑:我只注意到安全规则应该被用来感谢Eric的评论。但是,我不能100%确定该规则是否也可用于身份验证对象。例如,auth对象用于获取用户标识,但使用用户标识,是否有人可以获取存储在auth对象中的用户的电子邮件地址?例如,在上例中,某人可能会使用用户标识12345获取用户12345的电子邮件地址。

+0

您必须执行安全规则以确保安全。 –

+0

我根据您的评论添加了一些问题。谢谢。 – James

回答

0

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

  1. 单页的应用程序:您可以拨打getIdToken(),然后通过最新的ID令牌中URL查询参数,发布正文或标题,因为您将XHR请求发送到您的服务器。
  2. 传统网站:您必须设置会话cookie。最简单的方法是将ID令牌设置为会话cookie,并在过期时保持更新。在您的后端,您将在返回用户特定资源之前对其进行验证。
+0

看起来我可以使用[this](https://firebase.google.com/docs/auth/web/start#set_an_authentication_state_observer_and_get_user_data)和[this](https://firebase.google.com/docs/auth/) web/start#sign_in_existing_users)如果我想要一个更简单的方法。而对于后端,我可能会考虑[this](https://firebase.google.com/docs/auth/admin/verify-id-tokens)。谢谢你的建议! – James