将数据从服务器发送到浏览器到另一台服务器
Posted
技术标签:
【中文标题】将数据从服务器发送到浏览器到另一台服务器【英文标题】:send data from a server to browser to another server 【发布时间】:2021-10-22 12:04:54 【问题描述】:我有 2 台服务器,让我们将它们命名为 serverA
和 serverFirebase
serverA
无法访问 Internet,只能在本地网络中访问,并且它托管一个 .net 应用程序
serverFirebase
是 google firebase 服务器
我需要从serverA
向serverFirebase
发送请求,但我不能,因为serverA
无法访问互联网
我想到的解决方案是,由于浏览器(显示来自serverA
的网络应用程序)可以访问互联网,我可以使用他的浏览器代理我的请求
应该是这样的
serverA
-> 浏览器 -> serverFirebase
现在我想这样做的方式是这样的:
1 - 创建一个 rsa 密钥对,私钥在 serverA
,公钥在 serverFirebase
2 - 在serverA
中创建请求负载的 sha256 哈希并填充它并使用私钥对其进行签名(请注意,请求负载具有只能使用一次的订单号)
3 - 将有效负载和签名的哈希发送到浏览器
4 - 将负载和签名哈希从 borwser 发送到 serverFirebase
5 - 在serverFirebase
中使用公钥解密签名的哈希并将其与有效负载的哈希进行比较,并检查之前没有使用过订单号
我的问题是这种方法是否足够安全?以及是否已经有任何协议可以处理这种情况。
谢谢
【问题讨论】:
【参考方案1】:我认为这取决于您的威胁模型、您期望攻击者是谁以及您对环境的假设。
在不让这太复杂的情况下,想到的一种攻击途径是浏览器和serverFirebase
之间的中间人。攻击者可能只是读取您在serverA
上生成的消息并将其存储。由于他可以阅读您的消息(您只是对摘要进行签名,而负载本身未加密),因此他知道他们在说什么,并按照他想要的顺序,随时随地发送他想要的消息。
例如,如果您的第一条消息是buy 200 shares of Penny Stock
,而您的下一条消息是sell 100 shares of Penny Stock
。攻击者可能只能转发第一条消息,而不能转发第二条消息。
【讨论】:
感谢您的回答,消息的顺序并不重要,消息的有效负载是 Firebase 云通知请求,即使请求没有被发送,结果也不会那么激烈跨度>以上是关于将数据从服务器发送到浏览器到另一台服务器的主要内容,如果未能解决你的问题,请参考以下文章
ReverseProxy - 将一些 URL 发送到另一台服务器进行预处理