我正在开发一个基于 Express 框架的 Node.js 应用程序。在后端,我需要让服务器相互通信(即服务器 1 向服务器 2 发出请求)。
是否可以放弃 DNS A 记录并仅使用服务器的 IP 地址?
在那种情况下,我如何验证服务器和“客户端”(又名服务器)。我正在考虑要求服务器和“客户端”在请求和响应中分别传递一个安全 cookie。然后在采取任何其他操作之前验证安全 cookie。
最佳答案
使用 IP 可能比 DNS 更安全(例如没有 DNS 欺骗),但它仍然允许 ARP 欺骗,例如其他一些计算机声称拥有此 IP。如果两台计算机不在同一个网络中,也可以通过路由器等方式劫持请求。
安全 cookie 只是一个共享 secret 。与基于公钥的身份验证(例如使用证书)相反,共享 secret 的缺点是您需要以安全的方式分发它们,以便其他人无法访问它们。
我不认为您的想法比带证书的 SSL 更容易处理,所以我看不出制定自己的安全协议(protocol)有什么好处。历史告诉我们,此类自行开发的协议(protocol)大多提供比已建立的解决方案更差的安全性。
关于node.js - 服务器到服务器通信的 SSL 证书替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21766688/