当前位置: 首页 > 知识库问答 >
问题:

为组安全向Firebase存储添加令牌

冯浩旷
2023-03-14

对于我们的应用程序,我们需要能够提供团体访问文件。每个用户可能拥有大量的组,因此使用“自定义令牌”解决方案是没有意义的(无论如何,这是非常尴尬的)。

我发现,Firebase的存储安全规则非常有限。主要问题是,我们将组定义保留在存储安全规则无法访问的Firestore中。

为了克服这个问题,我们决定在每个上传文件的元数据中包含一个“令牌”,组中的任何人都可以访问这个令牌。当他们下载一个文件时,他们需要在请求参数中提供这个令牌(例如/groups/xxx/filename.jpg?token=abc)。

match /groups/{groupId}/{filename} {
        allow read: if request.auth != null && request.params.token == resource.metadata.token;
        allow write: if request.auth.uid == userId
                    && request.resource.size < 1 * 1024 * 1024
                    && request.resource.contentType.matches('image/.*')
                    && (resource == null || request.resource.contentType == resource.contentType)
                    && imageId.size() < 32
     ;
}

共有1个答案

郗缪文
2023-03-14

由于Firebase查询存储中的Firestore数据的能力受到严重限制,并且有关Request.param不可用的文档不正确,我们不得不使用一种不同的方法。

我们决定在查询组的文件时使用以下URL:

/groups/{groupId}/{token}/{filename}

 类似资料:
  • 所以我想知道,如果我将一个UUID作为后修复添加到文件路径(我现在这样做是为了唯一性,),它是否可以作为一种通过模糊来实现安全的方法呢?(这将是非常困难的野蛮猜测,使某种“私人”文件)。 我知道这不是很理想,但至少在Firebase为这种场景实现更好的解决方案之前,这是暂时的事情,并且能够在晚上睡得更好:p 我的想法是设置如下内容: null

  • 更新:在联系了Firebase的支持后,他们告诉我,在修复了他们的后端之后,这个问题确实被修复了。

  • 拒绝许可。无法访问存储桶..请访问Firebase控制台中的Storage选项卡,为您的存储桶启用Firebase存储,并确保您有足够的权限来正确提供资源 在谷歌搜索如何设置这些安全规则,我不确定什么是正确的答案。一些答案建议我在代码中编写方法来授予权限,但文档建议我需要在Firebase的端进行。 这是其中一个例子 我无法理解人们的回答 就像几个月前的这张 有人能解释一下当前的Firebase(

  • 当用户上载文件时,这个特定的时间存储在文件元数据中的自定义属性“过期”字段中。 我的问题是,我试图将该值用作函数的参数,如下所示: 但是“duration”函数似乎只接受幅度参数中的常量值,而不接受动态值。 有人也试过吗? 谢谢

  • 问题内容: 我正在运行一个基于Java Spring MVC的Web应用程序。它还基于Hybris平台。 现在,已经实现了有关身份验证和授权的基本功能。意味着我们确实有用于会话,有效的用户系统等的过滤器。 但是,我们目前还没有针对诸如XSS和其他可能的攻击之类的安全措施。XSS可能是最大的问题,因为它是最常见的攻击方式。 现在,我不知道……明智地采取什么步骤?我环顾四周,我发现存在像XSS-Fil

  • 允许访问简单的加密和解密字符串,以便存储在本地机器上。 进程:主进程 此模块保护磁盘上存储的数据不被其他应用程序或拥有完全磁盘访问权的用户访问。 请注意,在Mac上,需要访问系统Keychain,这些调用可以阻止当前线程来收集用户输入。 如果密码管理工具可用,Linux 亦是如此。 方法 safeStorage 模块包含以下方法: safeStorage.isEncryptionAvailable