Firebase 推特身份验证和跨站点脚本

Firebase twitter authentication and cross-site scription

我已经在我的 firebase 应用程序上实现了 "twitter authentication"。如此处所述: https://www.firebase.com/docs/web/guide/login/twitter.html

效果很好。

用户登录后,他还可以使用 XMLHttpRequest 向我的域发送一些请求。

当我发送 XMLHttpRequest 的负载时,我倾向于通过 javascript 传递 "username"。

我刚刚意识到使用 "Chrome Dev Tool" 的人可以拦截并篡改我的用户名。

有什么办法可以解决这个问题吗?

============================================= =====================

示例: 假设我的网站 运行 在这里:

www.example.com/

它提供一个静态页面 index.html,其中有很多 javascript 该页面使用 firebase api 并允许人们通过 Twitter(或 github)进行身份验证。 现在让我们假设一个人(已经登录)想要 post 某事。 我目前正在这样实施它: https://www.example.com/writeComment?comment=hello&username=jeff&provider=github

我担心的是,登录并不能使我免于使用 Chrome 控制台和更改用户名的人。

没有问题需要解决。这没有错。除非您在客户端和 API 之间来回发送受保护的数据,否则您需要 SSL。

请记住,客户端完全由支持 CORS 驱动的 API 现在已成为常态。安全地处理数据取决于实施团队。

在 Firebase 服务本身的上下文中:

Firebase handles many other security details for you. Specifically, we use strong 2048 bit keys for our SSL certificates, sign authentication tokens with SHA256 HMAC signatures, and use BCrypt for password storage.

https://www.firebase.com/docs/security/quickstart.html

如果我对问题的理解正确,那么您有两个服务客户端连接到:Firebase 和您管理的后端服务器。

您的后端服务器当然不应该信任用户发送的任何内容,即使它是通过 HTTPS 传送的。一个简单的答案是向服务器发送身份验证令牌并让它使用它验证用户(因为无法伪造令牌)。

一个更优雅的解决方案是切断绕过 Firebase 并连接到 REST 的整个过程 API。相反,使用 queue strategy 并让客户端写入 Firebase。

有了安全规则,服务器就不再需要担心身份验证了。如果用户可以写入安全路径,则他们已经通过身份验证并且问题已解决。然后服务器可以处理排队的请求并通过以安全的方式写回 Firebase 来响应。

这样就没有RESTAPI维护,没有双重认证,没有开销。让 Firebase 成为权威,将所有其他进程——特权或客户——转变为消费者。