Firebase域白名单如何在后台工作以使其万无一失?

时间:2018-07-12 21:07:38

标签: firebase web firebase-authentication

Firebase domain whitelisting如何在幕后工作以使其万无一失? 明确地说,我不是要在Firebase控制台中配置我的域(我知道该怎么做),而是尝试在服务器端构建一些类似的源域验证-API代码。 Firebase使用什么网络标准来确保只有授权域才能进行API调用,因为API令牌是公开的。

如果有人使用非浏览器HTTP客户端,并且源域标头伪造了我的应用程序的API令牌怎么办?我认为Firebase会考虑这种情况及其涵盖范围。试图了解其万无一失。

2 个答案:

答案 0 :(得分:2)

我的猜测是它不是万无一失的,但是在某些情况下会限制用例。

您可以在CORS相关标头中使用这样的白名单域,这将阻止现代浏览器执行某些操作。

列入白名单的域也可以用于身份验证,以确保登录后的重定向是到您的域。

从理论上讲,您可以检查Referer标头,但是出于安全性和隐私目的,许多浏览器都不提供标头,所以这是一个不好的选择。

对于firebase,由于没有库就很难使用firebase,因此库可以将当前URL提供给服务器,并阻止未列出域执行任何操作。这绝不是万无一失的。

  

如果有人使用非浏览器HTTP客户端,并且源域标头伪造了我的应用程序的API令牌怎么办?我认为Firebase会考虑这种情况及其涵盖范围。

我认为您的假设是错误的。客户不安全,任何请求都可以被伪造。最终,这是一个发送到服务器的数据包,如果您控制发件人,则可以控制数据包的内容。

如果我们监视客户端和Firebase之间的连接,我们可以找出一种方法来从另一个(在浏览器外部)进程执行相同的任务。

答案 1 :(得分:1)

TLS。如果您查看IETF的文档Handshake Protocol Overview

  

当TLS客户端和服务器首次开始通信时,他们同意   协议版本,选择加密算法(可选)   相互进行身份验证,并使用公钥加密技术   生成共享机密。

因此,我认为这是用于域白名单的机制。关于伪造的HTTP标头,Firebase不接受HTTP,仅接受HTTPS(TLS)。