【发布时间】:2022-01-07 16:45:38
【问题描述】:
我不知道我的问题是否在我应该在堆栈溢出时提出的问题附近,但如果是这样......
当我可以直接进入我的客户端代码并说:
db.collection("users").get().then(res=> {
res.docs.map(user => {
if (user.data().uid !== auth.currentUser.uid) {
// do something I'm about to put in this code snippet
}
})
})
例如,是否有人可以直接进入我的客户端代码并编写他们想要的任何内容,这就是为什么我们需要在 Firebase 控制台中的安全规则中编写代码?
这也让我感到困惑,为什么我们可以简单地在客户端执行逻辑时需要 Firebase 函数,尽管我可以理解有些事情需要在服务器端完成。
但就这个问题的范围而言,有人可以向我解释清楚为什么我们不能只在代码中编写安全性以使事情正常运行吗?
希望我对信息很全面。谢谢。
【问题讨论】:
-
无需浏览器即可调用api。我一直在使用进行 curl 调用的 GUI 来测试我的应用程序。在客户端,我可以添加一个断点并将一个变量更改为绕过安全检查的任何内容。
-
您在客户端公开的任何内容都可以在客户端外部访问。服务器规则会阻止我编写自己的客户端,它只是绕过所有前端安全检查。
-
他们如何获得对我的数据库进行 API 调用所需的信息?他们不需要钥匙吗?这是我的困惑程度。还是只是以防万一他们掌握了这些信息?
-
浏览器上运行的任何东西都应该被认为是不可信的。用户控制着浏览器,而不是你,所以浏览器没有秘密。
-
因为您无法信任客户端永远。
标签: javascript firebase google-cloud-firestore firebase-security