【问题标题】:want to send javascript code to socket.io server想将 javascript 代码发送到 socket.io 服务器
【发布时间】:2011-05-31 06:45:27
【问题描述】:

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

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

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

        };

socket.send(sent); 

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

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

【问题讨论】:

  • JSON 不能包含函数。您必须将其转换为字符串,然后 eval() 它。

标签: javascript socket.io


【解决方案1】:

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

说...

...您可以按照 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 攻击。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-16
    • 2021-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多