通过默默无闻的 Firebase 存储安全

标签 firebase google-cloud-storage firebase-storage firebase-security

如上所述here ,在具有私有(private)文件的组的特定场景中,看起来确实没有“好的”解决方案来使用存储安全规则而不使用用户声明。虽然该线程中有一些解决方法,但对于我的情况来说并不是很好的解决方案。

所以我想知道,是否将 UUID 作为后缀添加到文件路径中(我目前这样做是为了唯一性,例如 groups/{groupId}/images/{imageId}/imageName-{UUID} .png),它可以作为一种通过默默无闻的安全方式吗? (很难进行暴力猜测,制作某种“私有(private)”文件)。

我知道这并不理想,但至少暂时是这样,直到 Firebase 针对这种情况实现更好的解决方案,并且能够在晚上睡得更好:P

我的想法是设置如下:

  • 列表:不允许(给予“模糊性”)
  • 获取创建:仅授权用户
  • 更新删除:不允许(仅限使用 Admin SDK)

我的想法有意义吗?或者我错过了什么?

最佳答案

要求客户端知道 secret 字符串是通过默默无闻的安全性,是的。

如果您允许创建访问,并期望客户端应用程序生成 UUID,这似乎是其自身的安全(或数据完整性)问题,因为客户端实际上没有义务遵循任何命名约定,而且它是不可能编写规则来强制执行。

您可以通过首先调用 HTTP 函数、让该函数创建文件(空)、返回创建的路径来强制客户端创建对象。然后客户端可以使用返回的路径上传实际内容。

您可以编写一个存储触发器来确保客户端事后在路径中写入“安全”的内容。但最好的安全性永远不会相信客户端会做正确的事情。

关于通过默默无闻的 Firebase 存储安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59110124/

相关文章:

oauth - gsutil 结果为 "CommandException: You have multiple types of configured credentials"

google-cloud-platform - 拥有一个没有数据的 Google Cloud Storage 存储桶的成本是多少?

google-app-engine - 如何在 GAE 中接收配额警报

ios - Firebase 和 GeoFire fetch double 将新帖子添加到 Collection View

reactjs - Firebase 身份验证和 React Hook - 从钩子(Hook)返回的函数不起作用

firebase - 为什么在 Firebase 中使用 UID?我应该使用它吗

java - Firebase 存储 - 防止覆盖文件

ios - UserNotification 中显示的图像的长宽比与图像在数据库中的存储方式相关

javascript - 如何在Firebase存储触发功能中获取公共(public)下载链接: "onFinalize"?

ios - 在 iOS (Flutter) 中使用 Firebase 和 Geolocator(或任何 Swift 插件)构建错误