3

我想向 socket.io 服务器发送一个 javascript 代码,以便服务器向客户端广播并执行该代码。

我尝试过创建一个像这样的 json 变量。然后通过 socket.io 发送它

 var sent={
          'code': function(){
           console.log('javascript code');
          }

        };

socket.send(sent); 

当我在服务器上检查时,消息{} 与发送到其他客户端的消息相同。

这段代码有什么问题,我应该如何发送 javascript 代码?

4

1 回答 1

2

不要这样做。您将打开所有监听客户端以使其被黑客入侵。

那说...

...您可以按照 pimbdb 并将函数作为字符串传递,然后eval在接收端使用来执行它:

// on the sending client
var sent = {
    "code": "function() { /* do something not evil */ }"
}
socket.send(sent);

// on the receiving client
socket.on('message', function(data) {
    if (data.code) eval(data.code); // and pray.
});

再说一次,不要。相反,传递一些不可执行的数据,然后可以以有限数量的非恶意方式进行解释。

编辑:道歉,解释为好像你在服务器上执行代码。但是客户端<-> 客户端仍然容易受到 XSS 攻击。

于 2011-05-31T07:29:38.007 回答