0

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

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

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

4

2 回答 2

2

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

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

于 2015-01-22T19:56:43.983 回答
0

auth token也可以从这里Firebase REST APIs解释中查看。

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

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

参考

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

firebase 还提供了指定 DefiniteRules以访问 firebase 中的数据的方法。看这里

它还提供Data Validation了保持数据一致的功能。看这里

于 2015-01-22T19:48:22.613 回答