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

Is it safe to use Firestore and its features via client only?

如果我在我的应用程序中使用 prod 环境变量并为 Firestore 设置服务器端规则,我的应用程序是否可以完全安全地执行 CRUD 和身份验证?我问这个是因为我一直在看 Angular 相当著名的 YouTube 内容创作者 (Fireship) 的教程,他们没有接触服务器端代码,但仍然展示了如何制作生产应用程序。所有教程仅使用 Angular 和一些库来生成应用程序和功能,但 Google 上的控制台表示不要公开 API 键。即使在生产环境变量中仅使用客户端 Angular 也会暴露私钥,对吗?

简而言之,我应该使用 Node to CRUD 和 Auth with Firestore,还是控制台上的服务器端规则工作安全?

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

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

是让客户端直接访问服务还是让客户端通过你写的一些中间件,应该由其他原因决定,如this article