gpt4 book ai didi

javascript - 如何确保只有我自己的网站(客户端代码)可以与 Firebase 后端对话?

转载 作者:可可西里 更新时间:2023-11-01 02:36:25 25 4
gpt4 key购买 nike

我读过 Firebase对于我想做的事情来说,它看起来棒极了。我已经阅读了有关身份验证以及如何根据规则授权某些登录用户执行不同操作的内容。很好。

但是,我不确定另一种类型的安全性:如何确保只有我自己的站点(使用客户端 javascript)可以与我的 firebase 后端通信?我问是因为 afaik 没有办法阻止任何人从客户端代码(指向我特定的 firebase 后端的 url)查找我的 firebase 端点并开始使用它,天知道是什么。

在我想打开对匿名用户 Angular 色的写入的情况下,这尤其令人担忧。 (例如:可能有一些分析)

非常感谢能帮助我理清思路。

最佳答案

Update (May 2021): Thanks to the new feature called Firebase App Check, it is now actually possible to limit calls to your backend service to only those requests coming from iOS, Android and Web apps that are registered in your Firebase project.

You'll typically want to combine this with the user authentication based security that Kato describes below, so that you have another shield against abusive users that do use your app.

在我看来,与其说这是一个关于 Firebase 安全性的问题,不如说是对当今互联网架构的一般性讨论。由于网络是一个开放平台,您无法阻止任何人访问 URL(包括访问您的 Firebase),就像您无法阻止某人在现实世界中开车经过您的房子一样。如果可以,访问者仍然可以对来源站点撒谎,而且也没有办法阻止这种情况。

通过身份验证保护您的数据。使用 Forge 中的授权域来防止 CSRF .放security rules以防止用户做他们不应该做的事情。您将使用服务器来防止的大多数数据写入都可以仅通过安全规则来完成。

这实际上是 Firebase 和一般 API 服务的优良品质之一。客户端是完全隔离的,因此很容易被替换或扩展。只要你能证明你被允许进入,并遵守规则,你从哪里打电话并不重要。

关于匿名访问,如果你能让他们只从你的网站访问,那仍然不会阻止恶意写入(我可以打开我的 JavaScript 调试器,坐在你的网站上,想写多少次就写多少次)。相反,对匿名用户可写入的数据的格式、内容和长度设置严格的安全规则,或者为自己节省一些时间并寻找现有服务来为您处理分析,例如无处不在的 Google Analytics。

当然,您可以像使用任何数据存储一样使用服务器作为中介。这对于某些无法通过安全规则强制执行或无法信任经过身份验证的用户的高级逻辑(如高级游戏机制)很有用。但是,即使您将 Firebase(或任何数据库或服务)隐藏在服务器后面以防止访问,服务器仍然会有一个 API,并且仍然面临识别客户端来源的所有相同挑战,只要它在网络上。

匿名访问的另一种替代方法是使用 custom login ,这将允许服务器创建自己的 Firebase 访问 token (用户不必为此进行身份验证; token 的签名完全取决于您)。这是有利的,因为如果匿名用户行为不当,则可以撤销访问 token (安全规则使用 by storing a value in Firebase 来强制访问)。

更新

Firebase 现在有 anonymous authentication内置简单登录,无需为此处的常见用例使用自定义登录。

关于javascript - 如何确保只有我自己的网站(客户端代码)可以与 Firebase 后端对话?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18890330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com