首页 > 解决方案 > 客户端是否能够更改 onauthchanged firebase 实时数据库的用户对象?

问题描述

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

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

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

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

谢谢。

标签: javascriptnode.jsfirebasefirebase-authentication

解决方案


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

在数据库的安全规则中,有关用户的信息通过auth变量公开。此变量由 Firebase 从向数据库发出请求的用户的 ID 令牌填充,并且不能被普通用户欺骗。

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


推荐阅读