首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将Firebase apiKey暴露给公众安全吗?

将Firebase apiKey暴露给公众安全吗?
EN

Stack Overflow用户
提问于 2016-05-27 19:30:21
回答 8查看 166.6K关注 0票数 617

Firebase Web-App指南指出,我应该将给定的apiKey放入我的超文本标记语言中以初始化Firebase:

通过这样做,apiKey向每个访问者公开。该密钥的用途是什么?它真的意味着是公开的吗?

EN

回答 8

Stack Overflow用户

发布于 2016-12-05 02:40:36

基于prufrofro和Frank van Puffelen在这里的回答,我将这个设置组合在一起,它不会阻止抓取,但会使使用API密钥变得稍微困难一些。

警告:要获取您的数据,即使使用此方法,也可以简单地在Chrome中打开JS控制台并输入:

只有数据库安全规则才能保护您的数据。

然而,我将生产API密钥的使用限制在我的域名上,如下所示:

https://console.developers.google.com/apis

选择您的Firebase项目

凭据

在API密钥下,选择您的浏览器密钥。它应该看起来像这样:"Browser key (由Google Service自动创建)“

在“接受来自这些超文本传输协议推荐者(网站)的请求”中,添加应用程序的网址(例如:projectname.firebaseapp.com/* )

现在,该应用程序将只在这个特定的域名上工作。因此,我创建了另一个API密钥,它将是本地主机开发的私有密钥。

单击创建凭据> API密钥

默认情况下,正如Emmanuel Campos所提到的,Firebase只将localhost和您的Firebase托管域列入白名单。

为了确保我不会错误地发布错误的API密钥,我使用以下方法之一在生产中自动使用更受限制的API密钥。

Create-React-App的设置

/env.development

/env.production

/src/index.js

票数 109
EN

Stack Overflow用户

发布于 2017-10-23 12:06:32

我不相信向客户端公开安全/配置密钥。我不会说它是安全的,不是因为有人可以从第一天起就窃取所有的私人信息,因为有人可能会发出过多的请求,耗尽你的配额,让你欠谷歌一大笔钱。

你需要考虑许多概念,从限制人们不能访问他们不应该访问的地方,DOS攻击等等。

我更希望客户端优先连接到您的web服务器,在那里您可以在客户端和服务器之间或服务器和firebase之间放置任何第一手防火墙、验证码、cloudflare、自定义安全,您就可以使用了。至少您可以在可疑活动到达firebase之前先阻止它。你会有更大的灵活性。

我只看到一个很好的使用场景,那就是将基于客户端的配置用于内部使用。例如,您有内部域,并且您非常确定外部人员无法访问该域,因此您可以设置类似于浏览器-> firebase类型的环境。

票数 30
EN

Stack Overflow用户

发布于 2019-08-06 05:53:01

当启用用户/密码注册时,API密钥暴露会创建一个漏洞。有一个开放的API端点,它接受API密钥并允许任何人创建新的用户帐户。然后,他们可以使用这个新帐户登录到受Firebase Auth保护的应用程序,或者使用SDK通过user/pass进行身份验证并运行查询。

我已经向谷歌报告了这一点,但他们说这是预期的工作。

如果您不能禁用用户/密码帐户,您应该执行以下操作:创建一个云函数来自动禁用新用户的onCreate,并创建一个新的DB条目来管理他们的访问。

例如: MyUsers/{userId}/Access: 0

将您的规则更新为仅允许访问权限大于1的用户读取。

如果侦听器功能禁用帐户的速度不够快,那么读取规则将阻止它们读取任何数据。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37482366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档