Firebase存储规则不起作用

坦率的73 p

我使用的是默认存储规则:

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

或者

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

但无需登录,下载URL仍可访问。怎么预防呢?https://firebasestorage.googleapis.com/v0/b/sunshine-b9c43.appspot.com/o/user_icon%2FcwL09fN6x5fnaYBTbEXAHJ3rgxV2_1473299432313.jpg?alt=media&token=042803b7-a4f0-4728-9041-81e6d4

瑞安

当您将数据上传到Firebase Storage时,将为您提供两个“链接”以获取该数据:

  1. 专用链接。此链接只能由经过身份验证的用户/设备在内部访问。
  2. 公共链接。从技术上讲,使用此链接的任何人都可以阅读该链接,但是,该链接被认为是高度不可猜测的。最后的令牌将非常难以猜测。如果删除此令牌并导航到链接,您将看到Firebase Server阻止了您的访问。

如果您不满意该链接是否仍然存在以供全世界查看,则可以撤消该链接。

见下图。我拍了一张截图,向您展示了私有的“ gc //”链接以及公共的“ http”链接。看到那个小的“撤销”选项吗?如果您有不想让用户查看的特别敏感的数据,则可以使用它。

在此处输入图片说明

更新:在撰写本文时,似乎没有API调用或Firebase标志/函数内置函数来摆脱该公共链接;唯一的方法是一次通过FB控制台手动撤消它们。请参阅https : //groups.google.com/forum/#! topic/ firebase-talk/aw86jf8b7PY)Mike Mcdonald还指出了一个事实,即用户一旦看到图像,便总有可能无论如何都会下载或保存它,因此,无论如何,吊销该URL可能会或可能不会对安全性产生任何实际影响。

但是,想到的另一种选择是将图像拉到您的服务器,并使用一个临时链接(一次?)从那里托管它们以提供图像,从而使该公共URL只留给您看。这会在服务器端增加更多的工作,但是如果您绝对需要安全性,则可能要尝试使用它。

希望这可以帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章