firebase存储规则不起作用

时间:2016-09-16 18:26:19

标签: firebase google-api firebase-storage

我正在使用默认存储规则:

match /{allPaths=**} {
  allow read, write: if request.auth != null;
}

match /{allPaths=**} {
  allow read: if request.auth != null;
  allow write: if request.auth != null;
}

但是没有登录,下载网址仍然可以访问。怎么预防呢? https://firebasestorage.googleapis.com/v0/b/sunshine-b9c43.appspot.com/o/user_icon%2FcwL09fN6x5fnaYBTbEXAHJ3rgxV2_1473299432313.jpg?alt=media&token=042803b7-a4f0-4728-9041-81e6d4b3eb1d

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

当您将数据上传到Firebase存储时,您将获得两个链接'获取该数据:

  1. 私人链接。此链接仅可访问 由经过身份验证的用户/设备在内部进行。
  2. 公开链接。此链接在技术上可供任何人阅读 但是,通过链接,链接应该是高度的 未猜测的。最后的令牌很难猜到。 如果您删除此令牌并导航到该链接,您将看到 Firebase服务器阻止您访问。
  3. 如果您仍然感到不舒服,那么“那里的链接仍然不清楚”。为了让世界看到,你可以撤销链接。

    见下图。我拍了一张屏幕截图,向您展示私人' gc //'链接以及公众' http'链接。看到那个小小的'撤销'选项?如果您具有不希望用户查看的特定敏感数据,则可以使用该数据。

    enter image description here

    <强>更新 似乎在撰写本文时,没有API调用或构建Firebase标志/函数来摆脱该公共链接;唯一的方法是通过FB控制台一次一个地手动撤销它们。 (参考:https://groups.google.com/forum/#!topic/firebase-talk/aw86jf8b7PY)Mike Mcdonald还注意到这样一个事实:一旦用户已经看过图像,他们总是有可能下载或保存它,所以撤销URL可能有也可能没有无论如何真正的安全影响。

    然而,我想到的另一个选择是将图像拉到您的服务器并使用临时(一次性?)链接从那里托管它们以提供图像,只保留公开网址。这在服务器端添加了更多工作,但如果您绝对需要安全性,那么它可能是您想要探索的选项。

    希望这有帮助。