Socket.io 清理传入数据 (XSS)

Socket.io sanitize incoming data (xss)

本文关键字:数据 XSS io Socket      更新时间:2023-09-26

>im 在 expressjs 3 中使用 socket.io。我想用快速验证器清理传入的消息。我有这个代码:

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?因为这行不通。

在这种情况下,您希望使用 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,而只是侦听与它相同的端口。因此,表达式验证器实际上并不"存在于"Websocket数据事件的上下文中。