我应该如何保护我上传的firebase文档

wecizke3  于 2023-02-05  发布在  其他
关注(0)|答案(3)|浏览(123)

如何在Firebase中保护我上传的文档?
例如,这是我上传的文档URL:-https://firebasestorage.googleapis.com/v0/b/sapient-logic-368311.appspot.com/o/coder.JPEG?alt=media&token=55d1a727-956f-434b-bdad-a08b8ef133d0
任何人都可以通过使用此文档URL访问和查看我上传的文档。
我如何保护上传的文件,然后只有授权的人可以访问上传的文件。
我想如果有人得到文件的网址,虽然不能访问或看到文件
我想这样如果有人尝试使用文档URL访问我的文档:-x1c 0d1x

或者我可以在Firebase中创建私有桶吗?

pieyvz9o

pieyvz9o1#

任何人都可以通过使用此文档URL访问和查看我上传的文档。
这是正确的,发生这种情况是因为您共享了整个URL以及令牌,这是不正确的,因为令牌应该作为一种安全措施,将访问权限限制为只有那些拥有令牌的人才能访问。
因此,最好的选择是将这样的URL存储在FirestoreRealtime Database之类的数据库中,并且只允许使用安全规则读取URL。
请记住,每当文件上传到Cloud Storage for Firebase时,该令牌都会自动创建。因此,不要与任何人共享该令牌。

b4qexyjb

b4qexyjb2#

你可以写rules在它帮助你谁可以读或写的数据。

6l7fqoea

6l7fqoea3#

如果特定文件被认为是私有的,则通常没有客户端应该具有对URL标记的访问权限。
如果文件URL是公共的,而您希望将其设为私有,则可以修改访问令牌,而不必重新上载文件或更改其路径。
我不知道你在什么平台上工作,但是在Python SDK中,可以这样做:

from firebase_admin import storage
from uuid import uuid4

bucket = storage.bucket()
blob = bucket.blob(path_to_file)
token = str(uuid4()) # Random ID

blob.metadata = {
        "firebaseStorageDownloadTokens": token
    }
blob.patch() # Updates changes

在此之后,之前的URL将不可用,firestore将以您提到的错误响应:

{
  "error": {
    "code": 403,
    "message": "Permission denied."
  }
}

请注意,此解决方案适用于全堆栈应用程序,其中后端是将文件上传到Firebase存储的工具。如果您的项目包含直接连接到Firebase存储的客户端,则您应阅读安全规则并将其用作伪后端。

相关问题