Socket.io清理传入的数据(xss)

时间:2012-06-02 12:18:45

标签: javascript node.js express xss socket.io

我在expressjs中使用socket.io 3.我想用express-validator清理传入的消息。我有这段代码:

var expressValidator = require('express-validator')
, sanitize = require('express-validator').sanitize;

socket.on('chat', function (data) {
    io.sockets.in('test').emit('chat', {
            user: sh.session.user,
            message: data.message,
            time: new Date()
    });
});

我如何使用sanitize(data.message).xss?因为这不起作用。

1 个答案:

答案 0 :(得分:9)

在这种情况下,您希望使用validator代替express-validator。首先通过npm安装它:

npm install validator

然后以相同的方式使用它:

var sanitize = require('validator').sanitize;

// later on
message = sanitize(data.message).xss()

这样做的原因是因为express-validator用于处理通过expressjs发出的HTTP请求。在Websockets的情况下,你不是通过expressjs,而只是听同一个端口。因此,express-validator实际上并不存在于Websocket数据事件的上下文中。