微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在客户端应用程序中隐藏Firebase专用凭据

如何解决在客户端应用程序中隐藏Firebase专用凭据

我想避免在客户端应用程序中公开私人证书。道格·史蒂文森(Doug Stevenson)说firebase-authentication-vs-firebase-admin

您无法在应用中使用Firebase Admin SDK的原因是 因为您将必须随同您的应用一起发布私人证书 命令SDK运行 说Admin SDK的意思是说我们在使用例如:

import * as admin from "firebase-admin";

那:

import firebase from "firebase/app";
firebase.database().ref ... ?

代码段是否被视为admin SDK?要配置Firebase,我们仍然需要使用客户端应用程序附带私人证书,这是一个安全漏洞。那么我们应该考虑不要在客户端应用中使用firebase.database()或firebase.firestore()而是使用云函数吗?

解决方法

如果您在应用程序中附带了管理凭据,那么任何人都可以获取这些凭据并以他们认为合适的任何方式开始在项目上调用任何API。您将无法控制这种用法,因为它们将具有管理凭据。

因此,您确实不应在应用程序中使用Admin SDK,而应将所需的功能包装在自定义API(例如Cloud Function)中,以确保其使用得到授权。


这与您问题中的第二个片段不同,后者使用了Firebase的常规JavaScript SDK。这些SDK不使用管理凭据来访问项目,而是使用此处说明的配置数据:Is it safe to expose Firebase apiKey to the public?

通过此配置数据进行的访问受到为项目配置的服务器端安全规则的保护。因此,尽管用户仍然可以复制配置数据并自行调用API,但是任何访问都必须通过您配置的安全规则。然后在这些安全规则中确保您只能访问他们被授权访问的数据。

但是,由于Admin SDK通过设计绕过了安全规则,因此在您的应用中发布管理凭据时,您将没有该选项。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?