You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止Firebase Storage公开存储桶的目录内容枚举?

解决Firebase Storage公开存储桶的目录枚举问题

要在保持文件可公开访问的同时阻止目录内容枚举(避免IDOR漏洞),核心是拆分Firebase Storage的read权限——只允许单个文件的读取操作,禁止目录的列出操作。

规则调整方案

Firebase Storage的read权限包含两个子操作:get(读取单个文件内容)和list(列出目录下的所有文件/子目录)。当前你的规则大概率是直接开放了所有read操作,所以需要修改规则,明确允许get、拒绝list:

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow get: if true;  // 允许任何人访问已知路径的单个文件
      allow list: if false; // 禁止任何目录的枚举操作
    }
  }
}

规则说明

  • allow get: if true:保留文件的公开访问权限,用户只要知道文件的完整路径,就能正常读取内容。
  • allow list: if false:直接拒绝所有列出目录内容的请求,不管是通过API、gsutil工具还是其他方式,都无法枚举存储桶内的文件列表,从根源上阻止IDOR漏洞。

验证方法

规则部署生效后,你可以做以下测试:

  1. 直接访问已知路径的文件:比如通过https://firebasestorage.googleapis.com/v0/b/你的存储桶ID/o/文件名?alt=media,应该能正常加载文件。
  2. 尝试枚举目录:比如用gsutil ls gs://你的存储桶ID/某个目录/,会返回权限拒绝的错误,说明目录枚举已被阻止。

注意事项

修改规则后,记得在Firebase控制台的「Storage > 规则」页面点击「发布」,或者使用firebase deploy --only storage命令完成部署,确保规则生效。

内容的提问来源于stack exchange,提问作者toughyear

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 05:25:54