>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数据事件的上下文中。