web-applications - 我可以让 Web 客户端访问数据库吗?
问题描述
我是一位老 Web 开发人员,认为只有服务器端代码才能访问数据库以防止数据泄漏和损坏。
现在我正在尝试使用 google firebase 进行无服务器开发。由于管理用户身份验证,似乎可以配置数据库(firestore)访问规则,以便每个用户只能修改自己的数据(或读取公共数据)。
这会很好,因为否则我应该编写一个服务器端 api 来从客户端访问数据库。但是我有点害怕:这是建议的做法吗?
例如:如果用户被授权创建新对象,我如何检查对象是否一致创建?
也许我可以有一个混合访问策略?对于读取查询,我可以直接访问数据库,但也许我应该在服务器端部署写入查询?
我认为所有这些都应该在某个地方讨论。也许我缺少一些关键字来查找主题。
解决方案
是的。您的 Web 客户端拥有 Firebase API 密钥并能够直接访问数据库是完全正常的和预期的。正如您所指出的,您通常依靠安全规则来确保人们只能访问某些数据,并确保写入数据库的文档是一致的。
对于它的价值,我是您所说的混合访问策略的粉丝——尤其是在涉及可能跨越数据库中多个文档的更复杂的写入时。有时在数据库中保留一个单独的“待定用户写入”集合会更容易,然后让云功能完成更多繁重的工作,即在整个数据库中传播该操作。
如果你想了解更多信息,我可以推荐一个关于这个主题的视频:)
推荐阅读
- c++ - 如何在 Gnuradio 中将消息转换为浮点数
- python - 如果我们要修剪字符串,代码是什么
- asterisk - SIPAddHeader UNI 的等价物:在 PJSIP 中
- android - ArrayAdapter 在微调器中未激活
- python - 如何将 iter() 应用于分页 api?
- matlab - 如何设计一个观察者来估计单个状态的所有状态?
- r - 从 R 中的 yyyy-mm-dd h:m 格式开始,将每小时数据聚合成每月数据
- scala - Spark Scala 带分隔符的子字符串
- yii2 - Yii2 语法中的标头
- ssl - 如何为rabbitmq添加密码套件支持?