【问题标题】:firebase security rules - public vs authenticatedfirebase 安全规则 - 公开与经过身份验证
【发布时间】:2019-06-15 08:46:25
【问题描述】:

我希望这是提出此类一般性问题的合适论坛。

如果我不限制只有经过身份验证的用户的读写规则,firebase 声明任何人都可以从数据库读取和写入。但是当应用程序自己决定让谁读/写时,任何人都可以读写怎么办?

是因为理论上黑客可以侵入数据库并从集合中读取/写入吗?如果是这样,当规则仅限于经过身份验证的用户时,经过身份验证的黑客可以获取私人数据,例如不在其用户范围内的内容。

简而言之,如果将规则设置为允许公共用户和经过身份验证的用户访问数据库,这有什么区别,而实际上开发人员是决定应用程序中这些限制的人,就像应用程序的方式一样与 firebase 通信?

提前致谢

【问题讨论】:

    标签: firebase firebase-security


    【解决方案1】:

    应用本身并不是您的数据库可以接收的唯一流量来源。您的数据库公开了一个任何人都可以直接调用的 REST API,它有效地允许在数据库中不受保护的任何地方进行读写访问。 (Firestore 或实时数据库都提供公共 REST API。)攻击者唯一需要知道的是您的项目名称,并且该字符串在您首次发布应用程序后实际上是公开的。

    此外,该应用程序可能会受到攻击,从而让攻击者在您的应用程序中为所欲为。对于 Web 应用程序来说,这种类型的妥协相当容易。您不应该盲目地假设您的应用的用户也没有修改它的工作方式,因为他们实质上控制着运行它的硬件。

    【讨论】:

    • 感谢 Doug,所以在这种情况下 - 例如在社交网络应用程序中 - 是什么阻止了创建用户(因此他已通过身份验证)的攻击者读取其他人的私人消息?
    • 您的安全规则。
    • 但是安全规则是通用的,例如可以确定只有经过身份验证的用户可以阅读消息,但不能确定只有用户A可以阅读用户B的消息,而用户C不能。或者他们可以吗?我在这里错过了一个更大的概念吗?谢谢
    • 是的,他们可以,如果你这样写的话。他们可以访问您数据库中的任何文档,您可以使用它来确定事物之间的关系。请研究文档以了解您可以使用安全规则执行的所有操作。这里有很多页面可供阅读,包括 API 参考。 firebase.google.com/docs/firestore/security/overview
    猜你喜欢
    • 2019-01-20
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    相关资源
    最近更新 更多