如何限制Firebase数据修改?

时间:2016-02-15 20:09:19

标签: security firebase

Firebase提供数据库后端,以便开发人员可以专注于客户端代码。

所以,如果有人拿到我的firebase uri(例如,https://firebaseinstance.firebaseio.com),那就在本地上进行开发。

然后,他们是否可以在我的Firebase实例上创建另一个应用,注册并验证自己以阅读我的Firebase应用的所有数据?

3 个答案:

答案 0 :(得分:76)

感谢你们双方的讨论。但是,我想添加一个细节。

@Frank van Puffelen,

您提到了网上诱骗攻击。实际上有一种方法可以保证这一点。

如果您登录googleAPIs API Manager控制台,则可以选择锁定您的应用接受请求的HTTP引荐来源。

  1. 访问https://console.developers.google.com/apis
  2. 转到您的火力棒项目
  3. 转到凭据
  4. 在API密钥下,选择与firebase项目关联的浏览器密钥(应该与用于初​​始化firebase应用程序的API密钥相同。)
  5. 在"接受来自这些HTTP引荐者(网站)的请求,只需添加您的应用的网址。
  6. 这应该只允许列入白名单的域使用您的应用。

    此处的firebase启动核对清单中也对此进行了描述:https://firebase.google.com/support/guides/launch-checklist

    也许firebase文档可以使其更加明显或默认情况下自动锁定域并要求用户允许访问?

    再次,非常感谢!

答案 1 :(得分:34)

有人知道您的网址并不存在安全风险。

例如:我毫无疑问地告诉您,我的银行在bankofamerica.com上托管其网站,并在那里说出HTTP协议。除非您也知道我用来访问该网站的凭据,否则知道该网址对您没有任何好处。

为确保您的数据安全,您的数据库应受以下保护:

  • 验证规则,确保所有数据都符合您想要的结构
  • 授权规则,以确保只有授权用户才能读取和修改每一位数据

Firebase documentation on Security & Rules中涵盖了这一点,我强烈推荐这一点。

有了这些安全规则,其他人的应用程序可以访问数据库中数据的唯一方法是,如果他们复制应用程序的功能,请让用户登录他们的 app而不是你的,登录/读/写你的数据库;本质上是一种网络钓鱼攻击。在这种情况下,数据库中没有安全问题,尽管可能需要时间让某些机构参与其中。

答案 2 :(得分:2)

关于移动应用的Auth白名单,其中域名不适用,Firebase

1)SHA1 fingerprint用于 Android应用

2)App Store ID and Bundle ID and Team ID (if necessary)用于 iOS应用

您必须在Firebase控制台中进行配置。

有了这种保护,因为验证不仅仅是有人拥有有效的API密钥,Auth域等,而且还来自我们的授权应用程序和 Web domain name/HTTP referrer in case

说,如果这些API密钥和其他连接参数暴露给其他人,我们不必担心。

更多信息,https://firebase.google.com/support/guides/launch-checklist