我使用的是默认存储规则:
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时,将为您提供两个“链接”以获取该数据:
如果您不满意该链接是否仍然存在以供全世界查看,则可以撤消该链接。
见下图。我拍了一张截图,向您展示了私有的“ gc //”链接以及公共的“ http”链接。看到那个小的“撤销”选项吗?如果您有不想让用户查看的特别敏感的数据,则可以使用它。
更新:在撰写本文时,似乎没有API调用或Firebase标志/函数内置函数来摆脱该公共链接;唯一的方法是一次通过FB控制台手动撤消它们。(请参阅:https : //groups.google.com/forum/#! topic/ firebase-talk/aw86jf8b7PY)Mike Mcdonald还指出了一个事实,即用户一旦看到图像,便总有可能无论如何都会下载或保存它,因此,无论如何,吊销该URL可能会或可能不会对安全性产生任何实际影响。
但是,想到的另一种选择是将图像拉到您的服务器,并使用一个临时链接(一次?)从那里托管它们以提供图像,从而使该公共URL只留给您看。这会在服务器端增加更多的工作,但是如果您绝对需要安全性,则可能要尝试使用它。
希望这可以帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句