【发布时间】:2017-02-01 12:41:08
【问题描述】:
我不明白如何设置一天内上传文件的限制。我希望用户每天最多发布 10 张照片。在数据库方面,我放置了一个增量计数器。如果它达到一定大小,则不允许用户发布其他内容。但在存储方面这是不可能的。攻击者可以无限制地发布他想要的所有文件。有没有办法防止这种情况发生?提前致谢。目前我的安全规则是:
service firebase.storage {
match /b/projectid/o {
match /Photo/{user}/{photo}/image.jpg {
allow write: if request.auth != null &&
request.auth.uid == user && (
request.resource.size < 5 * 1024 * 1024 && photo.size() < 32 ||
request.resource == null);
allow read: if request.auth != null &&
request.auth.uid == user
}
}
}
【问题讨论】:
-
您可以做几件事。 1) 实施仅允许经过验证的用户读取/写入相关节点的规则。这将阻止攻击者仅上传到任何节点。 2) 实现当天的“upload_count”节点,并让上传(写入)包括上传和时间戳。设置一个验证规则,仅当当天的上传次数少于 10 次时才允许上传。您需要查看预定义的规则变量“now”和“new data”,并将 now 与尝试写入的数据的时间戳进行比较。
-
如果你看到我的规则,每个用户只能在其节点中写入,但问题是每个用户可以在其节点中写入无限的文件。我不明白第二点。在数据库中我已经有一个计数器但是在存储中我如何存储一个计数器?请记住,数据库和存储规则是不同且独立的,攻击者可以在不更新数据库中的计数器的情况下上传文件
-
没有办法解决这个问题?
标签: firebase firebase-security firebase-storage