Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从客户端向服务器发送伪造的socket.io请求(node.js/socket.io)_Javascript_Node.js_Socket.io - Fatal编程技术网

Javascript 从客户端向服务器发送伪造的socket.io请求(node.js/socket.io)

Javascript 从客户端向服务器发送伪造的socket.io请求(node.js/socket.io),javascript,node.js,socket.io,Javascript,Node.js,Socket.io,我正在编写一个web应用程序,我一直在考虑使用套接字时的安全性。假设客户端上有一个代码: $("#send").click(function(e) { var data = { name: "Albert", surname: "Einstein" }; socket.emit("send data", data); } 嗯,在服务器上,它以某种方式被处理。问题是,是否可以只模拟so

我正在编写一个web应用程序,我一直在考虑使用套接字时的安全性。假设客户端上有一个代码:

    $("#send").click(function(e) {
        var data = {
            name: "Albert",
            surname: "Einstein"
        };
        socket.emit("send data", data);
    }

嗯,在服务器上,它以某种方式被处理。问题是,是否可以只模拟
socket.emit(“发送数据”,data)
,而无需单击,并将我伪造的参数插入
数据
?如果是,怎么做?

是的,这是可能的。您可以编写一个简单的假客户端示例:

fake.js

const server = "127.0.0.1";  // change it to the address of your server
const port = 3000; // change it to the port of your server
const data = "I am a fake client";
const socket = require("socket.io-client")("http://" + server + ":" + port);

socket.on("connect", function () {
    console.log("connected");
    socket.emit("send data", data);
    console.log("data sent");
});
package.json

{
  "name": "fake",
  "version": "0.0.1",
  "private": true,
  "dependencies": {
    "socket.io-client": "^2.0.2"
  }
}
运行
npm install
,然后运行
node fake
,您的任务就完成了;)