当前位置: 首页 > 知识库问答 >
问题:

Firebase如何防止滥用文件上传和删除旧文件?

帅颖逸
2023-03-14

在firebase中,存储功能非常舒适。但我有两个问题需要使用存储功能

  1. 如何防止用户无限制地上传文件?例如)如果我可以写入/{uid}/{时间戳}/{文件名}路径,用户可以上传直到存储空间爆炸。
  2. 如何跟踪旧文件并将其删除?如果用户上传包含图像文件的聊天消息并删除图像,则文件仍存在于存储中。有没有钩子来管理它?

谢谢大家!

共有1个答案

吕昀
2023-03-14

好问题:

您可以使用Firebasehtml" target="_blank">存储安全规则来强制实施上传的任意约束。只要文件在名称或元数据中有一条唯一的标识信息,您就可以将它与用户联系起来,并实施基于时间的访问(以及其他)。一个简单的例子:

match /files/{userId}/{fileName} {
  // Only allow the authorized user to write to their files
  allow write: if request.auth.uid == userId;

  // Allow reads if the resource was created less than an hour ago
  allow read: if resource.timeCreated < request.time + duration.value(60, "m");
}

您正在要求一个垃圾收集系统:)简单的回答是,最好是在客户机上执行任何文件删除和任何数据库对象删除,但是众所周知,客户机是不可靠的。您还可以设置一个批处理作业(比如每天),从私有备份中读取数据库数据,检查哪些blobs不再被引用,并删除它们。您还可以等待Google Cloud功能,并执行操作(如在文件上传时写入数据库)来同步这些信息。最后,您可以使用对象生命周期管理方法来清理对象(删除、归档等)。)在你的桶里过了一定的时间。

 类似资料:
  • 问题内容: 我使用了以下代码,图像已被删除,但缩略图仍然显示。 问题答案: 要删除缩略图,您必须启用addRemoveLinks:true,并在dropzonejs中使用“ removedfile”选项 removefile:每当从列表中删除文件时调用。您可以听一下,并根据需要从服务器中删除文件。 我还添加了一个ajax调用,用于删除脚本,它看起来像这样: 它对我有效,因此希望对您有所帮助。

  • 问题内容: 我使用以下crontab记录来每天备份数据库: 我想添加另一个crontab记录,该记录将删除早于一个月的数据库转储。 有什么想法吗? 问题答案: 只需创建另一个cron: 它将查找所有早于30天的备份并将其删除。

  • 本文向大家介绍jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】,包括了jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】的使用技巧和注意事项,需要的朋友参考一下 导入控件 效果就是  点击一次上传, 当上传操作结束后  才能操作界面 总结 以上所述是小编给大家介绍的jquery aja

  • 目前在我的angular2项目中,我使用ng2fileupload将一些文件上载到azure blob存储。 由于某种原因,上传的文件在接收到服务器端时损坏。文件损坏的原因是因为文件内容被包裹在文本中: -----------------内容 处理格式 √PNG(实际png含量) ...... -----------------------------7e133e31c05a0-- 如何防止我的文

  • 本文向大家介绍php文件上传、下载和删除示例,包括了php文件上传、下载和删除示例的使用技巧和注意事项,需要的朋友参考一下 php文件上传、下载和删除示例大体思路如下,具体内容如下 一.文件上传 1.把上传文件的区域做出来 div1 2.把显示文件的区域做出来 div2 3.提交表单,上传文件 4.服务器接收文件数据 用$_FILE[name]接收 5.处理数据,看上传文件是否有错误 错误有如下几

  • 我正在寻找一个简单的批处理脚本,它将允许我删除旧文件并记录它是否删除了旧文件。搜索完网站后,我发现“forfiles”非常有用: 来自:批处理文件以删除超过N天的文件 正如我所说,我关心的是记录已删除的内容。我尝试了很多东西,但仍然不起作用。这是我的实际代码: 日志文件已创建,但为空,旧文件不会被删除。(它应该删除我2016年的8个文件)当我使用原始代码时,它会删除文件。我可能读过关于逃离 目标是