我目前正在开发一个使用 firebase auth、firestore 和 storage 的 Web 应用程序,用户可以在存储桶中上传文件,并严格保密。
我已经向存储添加了这样的规则:
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /filearchive/{fileName} {
allow read: if request.auth != null;
allow write: if request.auth.uid + ".pdf" == fileName
}
}
}
用户上传文件后,我使用 firestore 集合跟踪上传的文件,该集合存储通过以下方法获得的 URL:
.snapshot.ref.getDownloadURL().then(downloadURL => {
})
一切正常,但如果我共享上传文档的链接,它将在查询字符串中包含其令牌,并且每个人都可以公开访问。
我知道我可以撤销文件令牌,但这只有在泄漏之后才会发生,这可能很难识别(我不知道要使用哪些工具),并且如果这些工具是外部的,它会消耗我的计划中的带宽/数据使用过。
有谁知道最佳实践是什么,以及如何保护上传的文件,使其遵守规则“允许读取:if request.auth!= null;”?
问候
任何有链接的人都可以随时访问下载 URL。 他们永远不会受到安全规则的影响。 如果您确实希望将对文件的访问限制为特定经过身份验证的用户,则不应使用下载 URL,而应仅在用户在应用中对用户进行身份验证时才在应用中使用 Firebase SDK。 无法公开受安全规则控制的 URL。