如何保护 tcp 连接 - nodejs

How to secure tcp connection - nodejs?

本文关键字:tcp 连接 nodejs 保护 何保护      更新时间:2023-09-26

我在tcp server中使用了以下sample code

var server = net.createServer();
server.on('connection', function (socket) {
   if(restrictedIP == sock.remoteAddress){
      //How to close the particular connection safely without 
      //affecting other connections
   }
  socket.on('data', function(data) {
    console.log(data);        
  });
  socket.on('close', function(data) {
    console.log('client disconnected');
  });
});
server.listen(3000, '127.0.0.1');

注意:我有一个检查来验证客户端/服务器ip(第三行)。

问题:

  1. 此逻辑是否适合对客户端/服务器进行身份验证。

  2. 最主要的是,如何从受限制的IP地址关闭特定连接。第 4 行 - 评论)

场景:

我有两个服务器,一个是客户端服务器,它是express/http服务器,让我们将其命名为server1-express,另一个是名为server2-tcp的tcp服务器。

  1. server1-express服务器将使用 TCP 与server2-tcp通信。

  2. server2-tcp应该只允许这个特定的server1-express服务器,它不应该允许连接到任何其他IP,

  3. 使用 socket.destroy() 会使server2-tcp崩溃。

  4. 使用 socket.end() 将迫使我们write服务器。

如何仅允许特定ip并拒绝所有其他ip访问?

任何帮助或建议将不胜感激

这取决于您所说的"身份验证"是什么意思,但显然一个 IP 地址可以被多个人使用(例如在路由器后面)。因此,如果这是一个问题,您将不得不提出自己的协议或重用现有的协议(使用经过"实战测试"的协议可能是更好的主意)。一个更"复杂"的例子是使用TLS,它内置于节点中,通过证书/密钥为您提供加密身份验证,同时仍为您提供原始套接字。

就终止连接而言,您可以通过调用套接字上的.end().destroy()强制终止套接字来优雅地执行此操作。