仅通过客户端使用Firestore及其功能是否安全?

时间:2019-06-25 04:38:13

标签: google-cloud-firestore firebase-authentication environment-variables production-environment

如果我在我的应用程序中使用prod环境变量并为Firestore设置服务器端规则,那么我的应用程序执行CRUD和身份验证是否完全安全?我之所以这样问是因为,我一直在看相当著名的YouTube内容创建者(Fireship)的Angular教程,它们不涉及服务器端代码,而仍然显示如何制作生产应用程序。所有教程仅使用Angular和一些库来生成应用程序和功能,但是Google上的控制台说不要公开API密钥。即使在生产环境变量中也仅使用客户端Angular可以公开私钥吗?

因此,简而言之,我应该在Firestore中使用Node to CRUD和Auth,还是控制台上的服务器端规则可以安全运行?

1 个答案:

答案 0 :(得分:1)

您在客户端上用来使其直接与Firebase服务通信的配置不包含私有API密钥。在过去的几年中,在各种论坛上已经对此进行了很多讨论。您看到的可能被标记为API密钥的东西实际上是公共信息。它可以帮助客户端库找到要处理的项目。您要隐藏的API密钥是那些可以直接访问其他计费服务(包括Google Cloud服务帐户)的密钥。

您可以使用安全规则来确定用户可以或不能使用存储在其中的数据来限制对Firebase后端服务(Cloud Firestore,实时数据库,云存储)的访问。如果操作不正确,可能会遇到问题。

是否要让客户端直接访问服务或让客户端使用您编写的某种中间件,应由其他原因决定,如this article中所述。