Firebase 存储安全规则:指定“允许读取:如果 request.auth != null”后,我仍然可以使用提供的下载链接访问我的文件

Posted

技术标签:

【中文标题】Firebase 存储安全规则:指定“允许读取:如果 request.auth != null”后,我仍然可以使用提供的下载链接访问我的文件【英文标题】:Firebase Storage security rules: After specifying "allow read: if request.auth != null" I can still access my files using the download link provided 【发布时间】:2018-09-07 11:28:18 【问题描述】:

我的 Firebase 存储规则是

service firebase.storage 
    match /allPaths=** 
      allow read: if request.auth != null;
  

我已从 google 注销并使用 chrome 浏览器(隐身模式),然后输入从 firebase.storage 获得的 url(下载 url 链接)。我仍然可以下载文件。如果用户已通过 firebase.authentication 身份验证,如何确保文件仅允许下载?

我的文件位于根 firebase.storage 位置。

我也试过了

service firebase.storage 
  match /b/bucket/o 
    match /allPaths=** 
      allow read: if request.auth != null;



firebase.storage 中有一个 revoke download url url 但它似乎根本没有做任何事情。

【问题讨论】:

【参考方案1】:

下载网址可供公众访问,用于将文件共享给 Firebase 之外的应用程序。 Firebase 安全规则不会通过下载 URL 控制对存储对象的访问。您可以使用 Firebase 控制台撤消下载 URL。

另请参阅此answer from a Firebase team member 相关问题。他指出:

使用下载 URL 是在外部共享文件的适当方式 应用程序,或不需要登录的用户。

【讨论】:

有一个撤销下载 URL 链接,但是当我按下它时,我仍然可以通过 url 访问文件...该 url 变灰一两秒钟,然后又变黑。 好的,所以撤销只是发出另一个 url 并使用旧 url 撤销访问。所以,只要我不给出文件的 url,我就可以(有点……你知道,管理员可以共享下载 url,然后文件是公开的,嗯)

以上是关于Firebase 存储安全规则:指定“允许读取:如果 request.auth != null”后,我仍然可以使用提供的下载链接访问我的文件的主要内容,如果未能解决你的问题,请参考以下文章

读取 Firebase 存储映像安全规则

Firebase 存储安全规则

为特定用户提供访问权限的 Firebase 存储安全规则

Firebase 存储安全规则,允许公共或所有者私有文件访问

群组的 Firebase 存储安全规则

Firebase 存储安全规则不适用于文件夹