我有2台服务器,让它们命名为serverA
和serverFirebase
serverA
没有互联网访问,只能在本地网络中访问,它承载了一个。net应用程序
serverFirebase
是google firebase服务器
我需要从serverA
发送请求到serverFirebase
,但我不能,因为serverA
没有互联网访问
我想到的解决方案是,由于浏览器(显示来自serverA
的web应用程序)有互联网访问,我可以使用他的浏览器代理我的请求
就像这样
serverA
->默认浏览器环境;serverFirebase
现在我想这样做:
1 -创建rsa密钥对,私钥在serverA
,公钥在serverFirebase
2 -在serverA
中创建请求有效载荷的sha256哈希,并添加它并使用私钥签名(注意请求有效载荷有一个只能使用一次的订单号)
3 -发送有效载荷和签名哈希到浏览器
4 -发送有效载荷和签名哈希从浏览器到serverFirebase
5 -在serverFirebase
中使用公钥解密签名哈希,并将其与有效负载的哈希进行比较,并检查订单号之前没有使用过
我的问题是,这种方法是否足够安全?如果已经有任何协议来处理这种情况。
感谢我认为这取决于你的威胁模型,你预期的攻击者是谁,以及你对环境的假设。
不让这个变得太复杂,我想到的一种攻击途径是在浏览器和serverFirebase
之间的中间人。攻击者可能只是读取您在serverA
上生成的消息并存储它。由于他可以读取您的消息(您只对摘要签名,而使有效负载本身未加密),因此他知道它们在说什么,并以他想要的顺序和随时发送他想要的消息。
例如,您的第一个消息是buy 200 shares of Penny Stock
,下一个消息是sell 100 shares of Penny Stock
。攻击者可能只能转发第一条消息而不能转发第二条消息。