Javascript 能否在SocketIO中伪造消息确认?

Javascript 能否在SocketIO中伪造消息确认?,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,在SocketIO中,您可以通过提供回调函数获得确认,例如,根据SocketIO的文档: // server-side io.on("connection", (socket) => { socket.on("update item", (arg1, arg2, callback) => { console.log(arg1); // 1 console.log(arg2); // { name: "updated

在SocketIO中,您可以通过提供回调函数获得确认,例如,根据SocketIO的文档:

// server-side
io.on("connection", (socket) => {
  socket.on("update item", (arg1, arg2, callback) => {
    console.log(arg1); // 1
    console.log(arg2); // { name: "updated" }
    callback({
      status: "ok"
    });
  });
});

// client-side
socket.emit("update item", "1", { name: "updated" }, (response) => {
  console.log(response.status); // ok
});
在我的代码中,我提示用户响应,并假设回调只能由我提示的用户触发。这个假设正确吗?它是在SocketIO中实现请求-响应功能的安全方法吗

能否在SocketIO中伪造消息确认

不太容易,如果使用https,一点也不容易

如果您的socket.io连接是通过https启动的,那么您可以确保来自该套接字的响应确实来自同一个端点(例如来自您的服务器)。如果客户端发送消息并等待服务器的响应并获得响应,则该响应确实来自您连接的端点。没有其他计算机可以接管该插座或将其插入

如果您的socket.io连接是通过http启动的,那么可能会有中间人攻击,这些攻击可能会在传输过程中改变响应,不过socket.io更难做到这一点,因为它运行在内置了一些安全措施的webSocket传输上

如果您确实需要确保安全,那么可以使用https启动socket.io连接,这样就可以了