Firebase存储身份验证允许未经身份验证的用户

时间:2018-11-02 18:15:29

标签: firebase firebase-authentication firebase-storage firebase-security-rules

这可能是“按设计工作”,但我想确定...

我开始使用Firebase的示例进行存储和身份验证。使用他们的存储许可示例,我将其设置为:

// Grants a user access to a node matching their user ID
service firebase.storage {
  match /b/{bucket}/o {
    // Files look like: "user/<UID>/path/to/file.txt"
    match /user/{userId}/{allPaths=**} {
      allow read, write: if request.auth.uid == userId;
    }
  }
}

我正在使用他们的sample上传文件,并做了一些小的修改以设置与安全配置匹配的路径。

我上传了一个文件,它正确地进入了Firebase中的适当位置。然后从getDownloadURL()检索URL,可以得到一个类似于以下内容的链接:

https://firebasestorage.googleapis.com/v0/b/myapp/o/user%2FMY USER UID%2Ffilename.jpg?alt=media&token=SOME_GUID

然后我可以在该浏览器中为该用户显示该图像,但是复制和粘贴该URL也可以在未经身份验证的浏览器窗口中进行。

我希望对存储中任何内容的任何直接调用都将传递身份验证cookie,并且该cookie将用于在对用户进行响应之前对用户进行身份验证。显然,这不是Firebase的工作方式。

我想我读到令牌GUID会在一段时间后过期,但是对我来说,这似乎还不是很好的安全性-cookie似乎比将所有内容都放入URL更为安全,以防止意外暴露给私人文件。

我做得对吗,如果我按设计使用Firebase存储,这就是我必须忍受的事情吗?

如果有帮助,我正在本地运行网页。

0 个答案:

没有答案