Firebase 存储始终可公开访问

问题描述 投票:0回答:1

我目前正在开发一个使用 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;”?

问候

firebase firebase-authentication firebase-storage firebase-security
1个回答
3
投票

任何有链接的人都可以随时访问下载 URL。 他们永远不会受到安全规则的影响。 如果您确实希望将对文件的访问限制为特定经过身份验证的用户,则不应使用下载 URL,而应仅在用户在应用中对用户进行身份验证时才在应用中使用 Firebase SDK。 无法公开受安全规则控制的 URL。

© www.soinside.com 2019 - 2024. All rights reserved.