【问题标题】:Are auth tokens supposed to be viewable to the public?身份验证令牌应该对公众可见吗?
【发布时间】:2015-01-23 04:42:54
【问题描述】:

我对 firebase 安全性和一般 Web 开发有点陌生,但我在 Rails 应用程序的服务器端生成 JWT。但是,要将它们传递给 firebase,似乎我必须使用以下 Javascript 代码在视图中传递令牌(存储在数据库中的 users 表中):

var ref = new Firebase('https://mysite.firebaseio.com/');
ref.auth('<%= @user.auth_token %>');

这是您应该如何处理身份验证令牌的方式吗?我认为这可能会破坏这一点,因为用户可以从页面源查看身份验证令牌。

【问题讨论】:

  • 我已经在下面的答案中提到了保护 firebase 数据的方法,以及尽我所知处理访问令牌的方法,因为我在我的一个应用程序中实现了这一点。请提供更多您会遇到的指针。

标签: firebase jwt firebase-security json-web-token rest-firebase


【解决方案1】:

Firebase 身份验证令牌用于身份,但不用于授权。后者由您的Firebase Security Rules 管理,它将使用数据的当前(以及未来,如果写入)状态,并结合身份验证令牌中提供的身份来确定是否允许给定的读取或写入操作.

因此,用户可以看到/访问他们自己的身份验证令牌,但不能查看/访问其他用户的身份验证令牌,因为这将允许其他用户(可能是恶意方)冒充用户对应于该身份验证令牌。

【讨论】:

    【解决方案2】:

    auth token也可以查看Firebase REST APIs解释here

    查询参数auth的值也是可用的,如果有人以某种方式跟踪http数据包,比如使用wireshark,但我想这就是它的使用方式。 JWT auth 令牌只是一个字符串。

    但是这些JWTs可以使用Token Generation Libraries生成特定的过期时间,默认过期时间是24小时。

    参考

    默认情况下,身份验证令牌在发出 24 小时后过期,届时客户端将自动取消身份验证。我们可以通过更改 Firebase 仪表板的 Login & Auth 选项卡上的 Session Length 设置来覆盖它,或者在创建令牌时通过提供特定的到期日期来单独设置。有关详细信息,请参阅您正在使用的特定令牌生成器库的文档。

    Firebase 还提供了指定 Definite Rules 以访问 firebase 中的数据的方法。See Here

    它还提供Data Validation 以保持数据一致。 See Here

    【讨论】:

      猜你喜欢
      • 2018-08-07
      • 2021-01-25
      • 1970-01-01
      • 1970-01-01
      • 2017-06-13
      • 1970-01-01
      • 1970-01-01
      • 2016-09-29
      • 2021-01-26
      相关资源
      最近更新 更多