如何解决在客户端应用程序中隐藏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 举报,一经查实,本站将立刻删除。