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

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

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

那么,在服务器上,它以某种方式处理。 问题是,是否有可能只是模拟socket.emit ("send data", data) ,没有点击,并插入我的伪造参数的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 ,你的任务完成了)