这可能是“按设计工作”,但我想确定...
我开始使用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存储,这就是我必须忍受的事情吗?
如果有帮助,我正在本地运行网页。