2012-06-02 26 views
3

即時通訊在expressjs中使用socket.io 3.我想用express-validator清理傳入消息。我有這樣的代碼:Socket.io清理傳入數據(xss)

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?因爲這不起作用。

回答

9

在這種情況下,您希望使用validator而不是express-validator。首先安裝直通NPM:

npm install validator 

然後使用它幾乎以同樣的方式:

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

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

這樣做的原因是因爲express-validator是用來當您處理與去通的HTTP請求expressjs。在Websocket的情況下,你不會通過expressjs,而只是在與它相同的端口上進行監聽。因此,表達驗證器實際上並不在您的Websocket數據事件的上下文中。

+1

哦,我明白了。謝謝! :) – georgesamper