我希望这是提出这样一个一般性问题的合适论坛。
如果我不只对经过身份验证的用户限制读写规则,firebase会指出任何人都可以从数据库进行读写。但是,当应用程序自行决定允许谁读写时,任何人都可以读写呢?
是因为黑客理论上可以入侵数据库并从集合中读取/写入数据吗?如果是这样,当规则仅限于经过身份验证的用户时,经过身份验证的黑客可以获取私有数据,例如不在其用户范围内的内容。
简而言之,是否将规则设置为允许公共用户与经过身份验证的用户访问数据库有什么区别?实际上,开发人员是通过应用程序确定应用程序中这些限制的人与Firebase通信?
预先感谢
答案 0 :(得分:1)
应用程序本身并不是数据库可以接收的唯一流量来源。您的数据库公开了一个REST API,任何人都可以直接调用它,从而有效地允许对数据库中不受保护的任何位置进行读写访问。 (Firestore或Realtime Database都提供公共REST API。)攻击者唯一需要知道的是您的项目名称,并且在您首次发布应用程序之后该字符串实际上是公共的。
此外,该应用程序可能会受到攻击,从而使攻击者可以在您的应用程序中执行他们想要做的任何事情。对于网络应用程序而言,这种妥协非常容易。您不应盲目地认为应用程序的用户也没有在修改其工作方式,因为他们实际上控制着运行该程序的硬件。