如何防止未授权访问Firebase实时数据库?

55

我该如何防止其他用户通过我的 Firebase URL 访问我的实时数据库?为了只允许我的域名访问,我必须做些什么来确保其安全性?

2个回答

54

首先要明白,根据来源域名无法保护互联网上的任何URL - 恶意用户可以轻易地撒谎。保护源域仅有助于防止跨站点欺骗攻击(其中恶意来源假装是您的站点,并欺骗您的用户代表他们登录)。

好消息是,用户从一开始就已经被阻止从未经授权的域进行身份验证。您可以在Forge中设置您的授权域:

  • 在浏览器中输入您的Firebase URL(例如https://INSTANCE.firebaseio.com/
  • 登录
  • 点击“Auth”选项卡
  • 将您的域添加到“Authorized Requests Origins”列表中
  • 选择您想要使用的“提供程序”并进行相应配置

现在,为了保护您的数据,您需要转到安全选项卡并添加安全规则。一个很好的起点如下:

{
   "rules": {
       // only authenticated users can read or write to my Firebase
       ".read": "auth !== null",
       ".write": "auth !== null"
   }
}

安全规则是一个重要的话题。您需要通过阅读概述并观看此视频来了解相关知识。请确保跟上最新进展

19
我希望开发一个不需要登录即可使用的应用程序。但是,我担心如果有人查看我的网站源代码,并获取公开写入的Firebase URL,则可以将其用于自己的读写操作。我已将www.google.com添加为授权的URL,但是我可以从具有我的应用程序文件的不同主机IP地址写入我的Firebase。 - Serhat Koroglu
8
如所述,如果没有某种形式的身份验证,您无法阻止任何人向您的Firebase(或Web上的任何其他内容)写入。 - Kato
2
我看到这就像是一个关系型数据库认证。谢谢。 - Serhat Koroglu
4
如果他们实际上是同一个人(即他们拥有相同的用户名和密码),那么他们连接的位置有什么区别呢?使用验证规则和安全机制来防止未经授权的写入,不要关注来源等人为或无效的限制。 - Kato
1
是的,我非常确定那就是我说的。白名单是为了防止跨站点欺骗攻击,而不是为了防止请求来源。 - Kato
显示剩余6条评论

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接