为什么我仍然可以通过浏览器打开存储在Firebase存储器中的图像,即使它有规则?

问题描述 投票:0回答:1

所以我有这样的安全规则:

service firebase.storage {
  match /b/{bucket}/o {

    match /eventPoster/{imageID} {
            allow read: if isSignedIn()
          allow create: if isSignedIn() && isImage() && lessThanNMegabytes(0.5)
        }



        function isSignedIn() {
          return request.auth != null;
        }

        function isBelongTo(userId) {
          return request.auth.uid == userId;
        }

        function lessThanNMegabytes(n) {
            return request.resource.size < n * 1024 * 1024;
        }

        function isImage() {
            return request.resource.contentType.matches('image/.*');
        }
   }

}

如您所见,我只设置了可以查看/读取图像的登录用户。但是,如果我像下面的隐身浏览器一样,将文件中的链接复制并粘贴到存储区中,仍然可以看到我的图片

https://firebasestorage.googleapis.com/v0/b/XXXXXXX.appspot.com/o/eventPoster%2F0050370e-a226-4a69-a635-ceccce10007c?alt=media&token=44f6d5a4-ff44-4376-3c7b9dfac465

我希望我无法通过浏览器看到图像,我使用google chrome对其进行了测试。即使我的应用程序仅适用于Android和iOS,也仅用于测试,我还是使用浏览器。我认为,如果我通过浏览器访问它,则没有登录

firebase firebase-storage firebase-security
1个回答
0
投票

您在此处共享的URL是一个下载URL。无论安全规则如何,该URL都是公共可读的。阻止其工作的唯一方法是从Firebase控制台中撤消其令牌。

© www.soinside.com 2019 - 2024. All rights reserved.