如上所述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/