【问题标题】:Is the client able to change the user object for onauthchanged firebase realtime database?客户端是否能够更改 onauthchanged firebase 实时数据库的用户对象?
【发布时间】:2021-07-17 13:19:57
【问题描述】:

我想知道客户端是否能够将用户对象从 null 更改为某个值(通过控制台)并无需登录即可访问经过身份验证的资源。

我了解到您可以使用以下代码:

auth.onAuthStateChanged(user => {
    if (user) {
        console.log("user signed in")
        console.log(user)
    } else {
        console.log("user has signed out")
    }
});

firebase 如何阻止客户端尝试更改用户对象?
如果这是一个问题,是否有更安全的方法来处理这个问题?
我将如何实现它?

谢谢。

【问题讨论】:

  • 我不清楚您认为问题出在哪里。 Firebase 后端服务(以及您自己的后端服务)可以验证用户的 ID 令牌,以确保它不是假值。用户在您的应用中执行的操作无关紧要 - 不能伪造用户 ID 令牌以欺骗后端服务,使其认为用户不是实际经过身份验证的帐户。

标签: javascript node.js firebase firebase-authentication


【解决方案1】:

更改您共享的代码中的 user 对象不会让用户访问 Firebase 实时数据库中的其他信息。

在您的数据库的安全规则中,有关用户的信息通过auth 变量公开。此变量由 Firebase 从向数据库发出请求的用户的 ID 令牌填充,普通用户无法对其进行欺骗。

因此,虽然用户可能会更改客户端代码中的 user 变量,但这不会影响服务器端安全规则中的 auth 变量。这就是保护数据访问服务器端(如在安全规则中)而不仅仅是客户端安全很重要的原因之一。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    相关资源
    最近更新 更多