不安全的规则或错误

时间:2021-01-30 19:12:09

标签: firebase firebase-security

我对 firebase 规则很陌生,我有点困惑

我有这个获取 uid 的代码:

this.authService.getAuthState().subscribe(user => {
  this.editorId = user['uid'];
});

这是规则:

allow write: if request.auth != null 
        && request.auth.uid == resource.data.uid;

我想要实现的是拥有一个可以做所有事情的用户,没有角色,甚至没有注册,我想与 request.auth != null 进行额外检查,因为如果有人设法以某种方式创建帐户,一切都会被暴露,所以我决定在每个文档上添加一个 uid,所以只有当我登录时,我才会得到我的 uid,然后规则将检查文档是否与请求数据库中的操作的文档具有相同的 uid。< /p>

在执行创建/更新之前,我将 editorId 提供给要传递给服务的对象,以便文档将包含编辑内容的 uid

当我得到 user['uid'] 时,如果该值被其他一些随机字符串替换,firebase 规则将允许写入,它也会更改文档内的 uid,因此如果我再次尝试编辑,我不会被允许,因为我将从 authstate 获取当前用户 uid 并且它不会匹配。

我的思考过程是这样的:好的,我们通过 request.auth.uid 获取当前用户 ID,我们检查资源是否包含相同的 uid,然后继续与否。但是既然我在代码中更改了文档应该包含的 uid,为什么允许写入?它应该是用户 id 和为写作而发布的文档中存在的 id 之间的检查,或者我在这里没有得到的。

也许我太担心了?我不认为在安全方面过度担心是不好的做法,但这件事让我很困惑,我不能相信这条规则。

0 个答案:

没有答案