4

我在 expressjs 3 中使用 socket.io。我想用 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?因为这不起作用。

4

1 回答 1

10

在这种情况下,您想使用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 数据事件的上下文中实际上并不“存在”。

于 2012-06-02T12:41:09.110 回答