Firebase domain whitelisting如何在幕后工作以使其万无一失? 明确地说,我不是要在Firebase控制台中配置我的域(我知道该怎么做),而是尝试在服务器端构建一些类似的源域验证-API代码。 Firebase使用什么网络标准来确保只有授权域才能进行API调用,因为API令牌是公开的。
如果有人使用非浏览器HTTP客户端,并且源域标头伪造了我的应用程序的API令牌怎么办?我认为Firebase会考虑这种情况及其涵盖范围。试图了解其万无一失。
答案 0 :(得分:2)
我的猜测是它不是万无一失的,但是在某些情况下会限制用例。
您可以在CORS相关标头中使用这样的白名单域,这将阻止现代浏览器执行某些操作。
列入白名单的域也可以用于身份验证,以确保登录后的重定向是到您的域。
从理论上讲,您可以检查Referer
标头,但是出于安全性和隐私目的,许多浏览器都不提供标头,所以这是一个不好的选择。
对于firebase,由于没有库就很难使用firebase,因此库可以将当前URL提供给服务器,并阻止未列出域执行任何操作。这绝不是万无一失的。
如果有人使用非浏览器HTTP客户端,并且源域标头伪造了我的应用程序的API令牌怎么办?我认为Firebase会考虑这种情况及其涵盖范围。
我认为您的假设是错误的。客户不安全,任何请求都可以被伪造。最终,这是一个发送到服务器的数据包,如果您控制发件人,则可以控制数据包的内容。
如果我们监视客户端和Firebase之间的连接,我们可以找出一种方法来从另一个(在浏览器外部)进程执行相同的任务。
答案 1 :(得分:1)
TLS。如果您查看IETF的文档Handshake Protocol Overview:
当TLS客户端和服务器首次开始通信时,他们同意 协议版本,选择加密算法(可选) 相互进行身份验证,并使用公钥加密技术 生成共享机密。
因此,我认为这是用于域白名单的机制。关于伪造的HTTP标头,Firebase不接受HTTP,仅接受HTTPS(TLS)。