我正在使用默认存储规则:
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
答案 0 :(得分:1)
由于来自firebase控制台的令牌,每个人都可以访问此链接:
https://firebasestorage.googleapis.com/v0/b/fb-functions-xxx.appspot.com/o/assets%2Fhello.html?alt=media&token=xxxxxx-95d5-41cd-b827-329bbe6269fb
如果从链接中删除了令牌,则将应用firebase存储规则 https://firebasestorage.googleapis.com/v0/b/fb-functions-xxx.appspot.com/o/assets%2Fhello.html?alt=media
答案 1 :(得分:0)
当您将数据上传到Firebase存储时,您将获得两个链接'获取该数据:
如果您仍然感到不舒服,那么“那里的链接仍然不清楚”。为了让世界看到,你可以撤销链接。
见下图。我拍了一张屏幕截图,向您展示私人' gc //'链接以及公众' http'链接。看到那个小小的'撤销'选项?如果您具有不希望用户查看的特定敏感数据,则可以使用该数据。
<强>更新强> 似乎在撰写本文时,没有API调用或构建Firebase标志/函数来摆脱该公共链接;唯一的方法是通过FB控制台一次一个地手动撤销它们。 (参考:https://groups.google.com/forum/#!topic/firebase-talk/aw86jf8b7PY)Mike Mcdonald还注意到这样一个事实:一旦用户已经看过图像,他们总是有可能下载或保存它,所以撤销URL可能有也可能没有无论如何真正的安全影响。
然而,我想到的另一个选择是将图像拉到您的服务器并使用临时(一次性?)链接从那里托管它们以提供图像,只保留公开网址。这在服务器端添加了更多工作,但如果您绝对需要安全性,那么它可能是您想要探索的选项。
希望这有帮助。