【问题标题】:What to do about Firebase email warning [duplicate]如何处理 Firebase 电子邮件警告 [重复]
【发布时间】:2021-07-26 08:28:12
【问题描述】:

我有一个 Firebase 实时数据库,正在我正在构建的学习课程项目中使用。我刚刚收到一封电子邮件,警告说它将在 5 天后到期。它是这样说的:

您选择在测试模式下开始开发,这会使您的实时数据库实例完全对 Internet 开放。由于此选择会使您的应用容易受到攻击者的攻击,因此您的数据库安全规则已配置为在前 30 天后停止允许请求。

在 5 天内,所有客户端对您的实时数据库实例的请求都将被拒绝。在此之前,请更新您的安全规则,以允许您的应用程序正常运行,同时适当保护您的数据。每天运行分析;如果您在过去 24 小时内修改了规则,则这些更改可能不会被考虑在内。

我不知道这意味着什么或如何解决它。电子邮件有几个按钮:一个用于查看文档,另一个用于编辑规则。

文档显示了各种规则选项,但我不知道该选择哪个。当我单击编辑规则按钮时,它会显示一些带有 cmets 的代码,我认为它指示了到期日期,但我不知道是否或如何更改该代码,例如再添加 30 天。

我是数据库中唯一的用户,但课程还没有添加授权。我读到的一些答案推荐适用于 Firestore 而不是实时数据库,并且还建议了文档中未推荐的规则,因为任何登录用户都具有对整个数据库的读写访问权限。我应该怎么做才能解决这个问题?

【问题讨论】:

    标签: firebase-realtime-database firebase-security


    【解决方案1】:

    数据库的安全规则与应用的源代码非常相似:它们取决于您的域、用例以及您如何实现。因此,我们无法对此进行全面修复,切换到 Firestore 并没有什么不同,因为它具有类似的检查和警告。

    如果您只想在间隔中添加一些时间,请检查 how to get a timestamp for a data。例如,要在 2021 年 6 月 3 日之前访问数据库:

    console.log(new Date(2021, 5, 3, 0, 0, 0).getTime())

    其中的5 是六月,因为不知何故,JavaScript 日期中的月份是从 0 开始的。 ¯\_(ツ)_/¯

    同时,我建议您在继续使用您的应用程序之前阅读安全规则,然后在您开发代码时制定规则。

    另请参阅有关安全规则、如何开始使用以及一些有趣的更高级用例的这些先前问题:

    【讨论】:

    • 谢谢。我确实阅读了所有之前的相关问题,并且确实阅读了 Firebase 警告电子邮件中引用的文档。它有一个按钮,可将您带到该文档。很多规则示例是指 Firestore 而不是 Realtime。这就是为什么我不想弄清楚我使用的是哪个数据库。
    • 我上面给出的所有链接都是针对实时数据库的。我的答案中代码输出的时间戳格式适用于实时数据库规则。如果这对您没有帮助,我强烈建议您展示已经尝试过的内容。
    • 这是我点击编辑规则按钮时显示的代码: { "rules": { ".read": "now 我使用 来分隔代码部分。我不知道如何使用您的 console.log 示例。我不确定所有这些数字与评论日期有何关系。你能帮我解决这个问题吗?
    • 嘿@user258081 你在这方面有什么进展吗?我尝试在我之前评论中链接的问答中解释默认测试规则。
    【解决方案2】:

    在进行一些研究并寻求其他来源的帮助后,我发现规则代码实际上是在我设置实时数据库时自动生成的。它们是 Unix 时间戳。虽然我不知道我现在是否可以更改自动生成的规则,但我确实找到了一个 Unix 时间戳转换器 (https://www.epochconverter.com/)。我在 firebase Rules Playground 中进行了实验,并用时间戳替换了我的规则代码,以延长 30 天。然后我运行了一个模拟读取,它作为允许的代码通过。然后我发布了我的新规则代码。由于消息警告说访问权限将在 4 天后到期,如果规则更改有效,我将用评论更新此内容。

    我还发现此规则无需身份验证即可工作:

    { “规则”:{ ".read": "真", “.write”:“真” } }

    在我将身份验证代码写入我的项目之后:

    {"rules": { ".read": "auth != null", ".write": "auth != null" } }

    我希望这可以帮助遇到同样问题的人。

    【讨论】:

    • 好吧,即使修改后的代码通过了,也没有生效。我想一旦自动生成就是这样。我的下一个选择是尝试不推荐的读写 true 规则,直到我添加身份验证。
    • 所以,就我而言,经过我得到的所有帮助以及大量的研究和阅读,这个问题从未得到解决。还是谢谢。
    猜你喜欢
    • 2017-07-06
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    • 2014-05-17
    相关资源
    最近更新 更多