我应该将 firebase api 密钥隐藏到后端吗?不是因为数据安全,而是项目克隆问题

2023-12-23

有人可以帮我解答 firebase 安全问题吗?
这就是我试图弄清楚的:

我知道要让客户端与我的 firebase 应用程序交互,需要配置和firebase.initializeApp(config)将公开,每个使用客户端的人都可以在浏览器开发者控制台中看到它。

我也知道这很好,因为我可以使用安全规则和权限来保护数据。

但是,如果有人复制了我所有的客户端代码(包括配置)并构建了很多克隆站点,那么他们就可以随心所欲地使用我的 firebase 数据库,对吗?

在这种情况下,我应该将配置(api 密钥)隐藏到后端(例如云函数之类的)吗? 谢谢...


我以前也想过类似的事情,然后发现这篇方便的文章 https://javebratt.com/hide-firebase-api/经过一番搜索后。 (这篇文章本身是关于移动开发的,但有一节讨论了这个具体问题)。相关部分的标题是“按域和包划分的 API 阻塞"

这篇文章比我解释得更好,以防万一链接失效,我将复制下面的文本以供将来的查看者参考。这是 Jorge Vergara 在他的网站上写的https://javebratt.com/hide-firebase-api/ https://javebratt.com/hide-firebase-api/最后更新于 2018 年 7 月 20 日。

另一件很酷的事情是,如果你转到你的 Google API 帐户,你会看到 您的所有 Firebase 项目,选择一个,然后在“凭据”选项卡中 选择您的 API 密钥。

如果你从来没有搞过它,它应该被称为类似的东西 浏览器密钥(由Google服务自动创建),打开它,你会发现 密钥限制选项:

该键不受限制。为了防止未经授权的使用和配额盗窃, 限制你的钥匙。密钥限制可让您指定哪些网站、IP 地址或应用程序可以使用此密钥。

您可以在其中选择 HTTP 引荐来源网址(网站)并添加您的域。 这意味着 Firebase 数据库将只接受以下请求 人们从该领域写作。

或者 Android 应用程序和 iOS 应用程序,您可以在其中添加包名称和 指纹。

例如:

如果您构建 myawesomeapp.com 并在 HTTP 引荐来源网址中添加域 (网站)部分,任何尝试从不同的连接的攻击者 域将收到错误,并且这些请求将永远不会到达 数据库。

他提供的用于访问您的 Google API 帐户的链接是:https://console.developers.google.com/apis/credentials https://console.developers.google.com/apis/credentials

如果您点击显示“浏览器密钥(由 Google 服务自动创建)“那么你应该看到”申请限制“ 位于底部的部分,您可以在其中选择”HTTP 引荐来源网址“...单击它可以让您输入批准的域。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该将 firebase api 密钥隐藏到后端吗?不是因为数据安全,而是项目克隆问题 的相关文章

随机推荐

  • 以编程方式创建的按钮的 Onclicklistener

    我一直在寻找这个问题的答案 但似乎找不到 我有一个以编程方式创建的按钮 而不是在 xml 文件中 我希望在单击它时发生一些事情 显示警报或移动到另一个屏幕等 按钮代码 Button submitButton new Button this
  • 不带等号的 ASP.NET QueryString

    当我有一个像这样的网址时 http www mysite com MyTest http www mysite com MyTest MyTest 显示为请求对象的查询字符串中的键 如果我删除 符号 例如 http www mysite c
  • FxCop Phoenix 分析引擎出错

    因此 我尝试运行规则集中定义的一堆规则 RuleSet 文件实际上是使用 Sonarqube 生成的 我已经选择了其中的所有规则 包括 FxCop ReSharper 和 StyleCop 规则 我这样启动 FxCop C FxCop Fx
  • 如何防止春季日程重叠?

    Scheduled fixedDelay 5000 public void myJob Thread sleep 12000 如果上一个例程尚未完成 如何阻止此春季作业运行 默认情况下 spring使用单线程Executor 所以两个 Sc
  • C++ 中的 void 指针是什么? [复制]

    这个问题在这里已经有答案了 可能的重复 什么是void指针 什么是空指针 https stackoverflow com questions 4334831 what is a void pointer and what is a null
  • “[本机代码]”是什么意思?

    我尝试研究 jQuery 代码 所以我使用了这个 document write constructor jsfiddle http jsfiddle net WZGWp 我得到这个结果 function Function native co
  • Pytest 和动态夹具模块

    我正在使用 pytest 为可以在本地和云中运行的软件编写功能测试 我想创建 2 个模块 每个模块具有相同的模块 夹具名称 并让 pytest 加载其中之一 具体取决于我是在本地还是在云中运行测试 fixtures fixtures ini
  • React-select isMulti 选择所有过滤选项

    我需要在多选中添加 全选 选项 如果至少有 1 个过滤选项 则应显示它 单击 全选 应该仅添加过滤后的选项 不一定是所有选项 到已选择的选项 Input is empty so all options are filtered 单击 全选
  • 如何在 EF Core 中插入外键影子属性?

    EF Core 允许我们省略外键属性 因为导航属性的存在足以建立两个实体之间的关系 然后 EF Core 将创建所谓的外键影子属性 https learn microsoft com en us ef core modeling shado
  • 使用ajax和codeigniter在引导模式中提交表单,无需更改页面

    我正在尝试使用 ajax 在引导模式中提交表单 而且我的表单提交成功 但是ajax内的success语句没有执行 该页面被重定向到一个空白页面 显示 msg ok 我正在粘贴控制器和视图中的代码 请帮忙 控制器 update profile
  • 正则表达式中 \b 和 \B 之间的区别

    我正在读一本关于正则表达式的书 我遇到了这个例子 b 猫把食物撒得满屋子都是 使用正则表达式 bcat b将匹配该词cat但不是cat in scattered For B作者使用了以下例子 请输入九位数的 ID 出现在您的彩色编码密码上
  • Python 3 - 无法使用 re 库进行打印

    我有这个代码 import requests from bs4 import BeautifulSoup import re url http www rockefeller edu research areas summary php i
  • Opengl Es如何用于gpgpu实现

    我想使用 Opengl Es 进行图像处理代码的 gpgpu 实现 我想知道我可以使用 Opengl Es 来实现此目的吗 如果可以的话 哪个版本的 Opengl Es 将更适合此目的 Opengl Es 1 1 或 2 0 OpenGL
  • 如何设置“内容编码”以启用 Webpack 服务器的 gzip 文件

    我使用创建了一个角度通用的应用程序Webpack服务器 我已经用过 压缩 webpack 插件 来压缩我的 js html 文件 以便我可以将它们从服务器提供给浏览器 压缩文件是通过该插件正确创建的 问题 虽然浏览器显示它可以接受 gzip
  • 盒子碰撞检测和弹跳

    我正在制作乒乓球 并且发现编写一个将球正确地从四堵墙上弹开的算法真的很困难 稍后我将处理得分问题 因为只有西边和东边的一部分会进球 所以现在我想让球在盒子周围弹跳 检测球是否撞到墙壁很容易 但我在计算新角度时遇到困难 这是我到目前为止所想出
  • tf.browser.fromPixels 仅返回零

    这里 tf browser fromPixels 返回一个只有零的张量 image data 包含预期值 不仅仅是零 tfjs 使用脚本标签加载 tfjs 1 0 0 但更改版本没有帮助 有什么问题吗 可能是一些愚蠢的事情 我是 Tenso
  • 如何在 NetBeans 的 Android 项目中使用外部 jar?

    我需要创建一个 Android 库 我可以将其作为 jar 包含在任何 Android 应用程序中 我使用 NetBeans 6 8 nbandroid 插件和 Android SDK 到目前为止我采取的步骤是 1 创建库项目 其中包含 a
  • 用于 mvc 的 html 编辑器的数据属性

    编辑器的数据属性不起作用 Html EditorFor model gt model SireTag new data typeahead dsfsdfsd 当我打开 Chrome 浏览器时 我看不到文本框的任何数据属性 我尝试凝视并没有发
  • 为什么我可以将并行流收集到任意大的数组,但不能收集顺序流?

    从回答这个问题 https stackoverflow com q 49760006 7294647 我遇到了一个奇怪的功能 以下代码按照我的预期工作 现有数组中的前两个值将被覆盖 Integer newArray Stream of 7
  • 我应该将 firebase api 密钥隐藏到后端吗?不是因为数据安全,而是项目克隆问题

    有人可以帮我解答 firebase 安全问题吗 这就是我试图弄清楚的 我知道要让客户端与我的 firebase 应用程序交互 需要配置和firebase initializeApp config 将公开 每个使用客户端的人都可以在浏览器开发