firebase安全规则-公共与认证

firebase安全规则-公共与认证,firebase,firebase-security,Firebase,Firebase Security,我希望这是提出这样一个一般性问题的合适论坛 如果我不限制只对经过身份验证的用户执行读写规则,firebase声明任何人都可以从数据库进行读写。但是,当应用程序本身决定让谁读/写时,怎么会有人可以读和写呢 这是因为黑客理论上可以侵入数据库并读取/写入集合吗?如果是这样,当规则仅限于经过身份验证的用户时,经过身份验证的黑客可以获取私人数据,例如不在其用户范围内的内容 简言之,当开发人员在应用程序与firebase的通信方式中决定这些限制时,规则是否设置为允许公共用户与经过身份验证的用户访问db有什么

我希望这是提出这样一个一般性问题的合适论坛

如果我不限制只对经过身份验证的用户执行读写规则,firebase声明任何人都可以从数据库进行读写。但是,当应用程序本身决定让谁读/写时,怎么会有人可以读和写呢

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

简言之,当开发人员在应用程序与firebase的通信方式中决定这些限制时,规则是否设置为允许公共用户与经过身份验证的用户访问db有什么区别


提前感谢

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


此外,应用程序可能会被破坏,攻击者可以在你的应用程序中执行任何他们想要的操作。这种折衷方式对于web应用程序来说相当容易。你不应该盲目地认为你的应用程序的用户也没有修改它的工作方式,因为他们基本上控制着它运行的硬件。

谢谢Doug,那么在这种情况下——例如在社交网络应用程序中——如何防止创建用户的攻击者(因此他已通过身份验证)要读入其他人的私人邮件?您的安全规则。但安全规则是通用的,例如,它们可以确定只有经过身份验证的用户才能读取邮件,但不能确定只有用户A才能读取用户B的邮件,而用户C不能。或者他们可以?我是不是错过了一个更大的概念?谢谢,他们可以,如果你这样写的话。他们可以访问数据库中的任何文档,您可以使用这些文档来确定事物之间的关系。请研究文档以了解您可以对安全规则所做的一切。这里有很多页面可以阅读,包括API参考。