首页 > 解决方案 > 我可以让 Web 客户端访问数据库吗?

问题描述

我是一位老 Web 开发人员,认为只有服务器端代码才能访问数据库以防止数据泄漏和损坏。

现在我正在尝试使用 google firebase 进行无服务器开发。由于管理用户身份验证,似乎可以配置数据库(firestore)访问规则,以便每个用户只能修改自己的数据(或读取公共数据)。

这会很好,因为否则我应该编写一个服务器端 api 来从客户端访问数据库。但是我有点害怕:这是建议的做法吗?

例如:如果用户被授权创建新对象,我如何检查对象是否一致创建?

也许我可以有一个混合访问策略?对于读取查询,我可以直接访问数据库,但也许我应该在服务器端部署写入查询?

我认为所有这些都应该在某个地方讨论。也许我缺少一些关键字来查找主题。

标签: web-applicationsgoogle-cloud-firestore

解决方案


是的。您的 Web 客户端拥有 Firebase API 密钥并能够直接访问数据库是完全正常的和预期的。正如您所指出的,您通常依靠安全规则来确保人们只能访问某些数据,并确保写入数据库的文档是一致的。

对于它的价值,我是您所说的混合访问策略的粉丝——尤其是在涉及可能跨越数据库中多个文档的更复杂的写入时。有时在数据库中保留一个单独的“待定用户写入”集合会更容易,然后让云功能完成更多繁重的工作,即在整个数据库中传播该操作。

如果你想了解更多信息,我可以推荐一个关于这个主题的视频:)


推荐阅读