如何限制Firebase数据修改?


92

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

因此,如果有人拿了我的firebase uri(例如https://firebaseinstance.firebaseio.com),则在本地进行开发。

然后,他们能否在我的Firebase实例之外创建另一个应用程序,进行注册并进行身份验证以读取我的Firebase应用程序的所有数据?

Answers:


103

@弗兰克·范普菲伦,

您提到了网络钓鱼攻击。实际上,有一种方法可以确保这一点。

如果您登录到googleAPI API管理器控制台,则可以选择锁定您的应用将从哪个HTTP引荐来源网址接受请求。

  1. 访问https://console.developers.google.com/apis
  2. 转到您的Firebase项目
  3. 转到凭证
  4. 在“ API密钥”下,选择与您的Firebase项目关联的浏览器密钥(应具有与用于初始化Firebase应用程序的API密钥相同的密钥。)
  5. 在“接受来自这些HTTP引荐来源网址(网站)的请求下,只需添加应用程序的URL。

这仅应允许列入白名单的域使用您的应用。

在以下Firebase启动检查清单中也对此进行了描述:https : //firebase.google.com/support/guides/launch-checklist

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


2
当我转到Google API控制台时,看不到用于锁定HTTP引荐来源网址的选项。屏幕截图将很有帮助。thx
rattanak

您是否尝试过上述步骤?它应该带你去那里。出于安全原因,我不会采取屏蔽措施。记住要寻找浏览器密钥。祝你好运。
prufrofro

4
如果将Firebase与混合移动应用程序结合使用,并使用诸如ionic之类的框架,白名单如何工作?有什么建议么?
Dinana'9

1
@prufrofro对您来说很好吗?正在考虑针对Android应用执行相同的操作。我想知道为什么Firebase在安全性部分没有涵盖这一点。
steliosf

2
@Anand是,但是Firebase在文档中未涵盖此内容。默认情况下,密钥是公用的,您必须手动限制它们,以仅在特定的程序包名称和SHA-1应用程序证书中使用。我想知道为什么Firebase根本没有提到这一点。有捕获物或其他东西吗?
steliosf

38

有人知道您的URL的事实并不构成安全风险。

例如:我可以毫不费力地告诉您,我的银行在bankofamerica.com上托管其网站,并且在那里使用HTTP协议。除非您还知道我用于访问该网站的凭据,否则知道URL不会有任何好处。

为了保护您的数据,数据库应受到以下保护:

  • 验证规则,可确保所有数据遵循您想要的结构
  • 授权规则,以确保每位数据只能由授权用户读取和修改

我强烈建议在《安全性和规则》Firebase文档中介绍所有这些内容。

有了这些安全规则,其他人的应用程序可以访问您数据库中数据的唯一方法是复制他们的应用程序功能,让用户登录到他们的应用程序而不是您应用程序并登录/读取/写入您的数据库;本质上是网络钓鱼攻击。在那种情况下,数据库中不存在安全问题,尽管可能需要一些权威人士参与。


4
不是我要找的答案。让我以另一种方式问你。假设我将此网址提供给了我的firebasehttps://tinderclone.firebaseio.com/https://tinderclone.firebaseio.com/profiles.json。它们是真正的Firebase数据库。您能开发一个应用程序吗,制作一个注册表格和一个带有电子邮件的登录表格。由于我的应用程序允许任何人通过电子邮件进行注册,因此在您注册后,是否可以读取所有数据?我稍后再问你一个问题。谢谢
rattanak '16

4
这取决于您如何保护数据库。只需添加即可".read": false防止任何人看到数据。您可能希望允许更多,但这完全取决于您的用例。《安全性和规则》Firebase文档中介绍了保护数据的安全性
Frank van Puffelen '16

6

对于域名不适用的移动应用程序的Auth白名单,Firebase具有

1)SHA1 fingerprint适用于Android应用

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

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

有了这种保护,因为验证不只是如果有人有有效的API密钥,身份验证域等,但也就是从我们获得授权的应用和未来domain name/HTTP referrer in case网络

话虽如此,我们不必担心这些API密钥和其他连接参数是否暴露给其他人。

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


请原谅我的无知,我对加密不是很好,但是不能通过您的apk访问Sha1吗?人们也不能只复制Sha1吗?我看不出这有什么帮助。我很高兴得到其他证明:)
cs guy

是。您当然可以得到apk的sha1。但这不是您作为参数传递给Firebase来验证您的呼叫的东西。它由api-sdk级别的firebase采取(相信来自android runtime)。因此,您将无法将其作为伪造连接的参数发送到Firebase。
阿南德

仅使用SHA1指纹不会帮助您保护Android应用程序与Firebase的通信。SHA1本身可以轻松获取和复制,并且仍可以使用Firebase API代替SDK来伪造该连接。您应该首先证明您的应用程序,并使用一些代码混淆来隐藏密钥。
FEBRYAN ASA PERDANA
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.