【问题标题】:Cron Jobs vs Security RulesCron 作业与安全规则
【发布时间】:2018-07-31 11:54:38
【问题描述】:

在安全性和速度方面,为了在 firebase 数据中包含过期数据,使用 cron 作业在过期后删除数据或使用安全规则以允许某些项目被删除会更安全吗?阅读它们是否已在特定时间段内发布?我的安全规则是:

 "rules": {
     "posts": {
       "$postID": {
        ".read": "data.child('timestamp').val() > (now - 86400)",

此外,用户只会检索时间戳小于一天的帖子。但是,这样做的问题是帖子通过列表显示在表格视图中。如果帖子在用户在应用程序中时过期,则只有在应用程序再次查询数据时它才会消失。在添加每个帖子后使用cron作业添加一个计时器会更好吗firebase 数据库?

【问题讨论】:

    标签: swift firebase firebase-realtime-database cron firebase-security


    【解决方案1】:

    “cron”作业不是计时器。它是一些代码的定期执行(例如:每小时、每周、每天)。您不能基于每个项目配置 cron 样式的调度程序。它只会按您指定的单个计划执行。

    如果您绝对必须在为每个项目定义的一段时间后锁定数据,那么安全规则可以帮助您更好地实现目标。但是,如果您的规则允许用户列出某个位置的所有项目,这意味着您必须授予他们对具有该列表的整个节点的无条件读取访问权限。完成此操作后,您就不能拒绝访问该位置的儿童。安全规则的工作方式是,一旦有人在某个位置拥有读取权限,他们就可以读取所有子节点,而不管子规则。

    【讨论】:

    • 实现在特定时间段后过期的帖子(例如 Snapchat Stories)的最佳方法是什么?每秒运行的 cron 作业是否可行?一旦帖子过期,用户将无法再访问它,并且安全规则将允许他们在规则根据您更改后查看它@Doug
    • 你当然可以试试。
    • 如果我使用安全规则,您说当一个人可以访问某个位置时,无论规则如何,他们都可以读取它。这不是期望的结果,因为即使用户曾经访问过该帖子,他们也不应该能够看到该帖子。每个帖子是否有一个 cron Job 的替代方案,或者仅通过云功能删除超过特定时间的帖子的可能性?
    • Firebase 目前没有提供调度机制。
    • 我认为最好的解决方案是每分钟运行一次 cron 作业,添加不允许用户阅读时间大于一小时的帖子的安全规则,并在用户端查询仅适用于时间小于一天的数据。这样,即使用户有一个过期的帖子,他们在 cron 作业删除它之前只有一分钟的帖子,如果用户登录,他们将无法获得过期的帖子,因为查询不允许他们来获取它,并且数据库安全规则可以是额外的安全层。但是,将调用近 87,000 个函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 2019-04-16
    • 2020-06-19
    • 1970-01-01
    • 2011-07-19
    • 2010-10-10
    • 1970-01-01
    相关资源
    最近更新 更多