安全Node.js聊天(避免XSS)

mim*_*ipc 6 javascript security xss node.js socket.io

我正在与Node.js和socket.io建立一个简单的小聊天

当用户键入他的消息时,它将被广播给所有其他用户.

服务器发送消息:

io.sockets.emit('fromServerToClient', { "message": message });
Run Code Online (Sandbox Code Playgroud)

客户端显示它:

socket.on('fromServerToClient', function (data) {
    $('#messages').append(data.message + '<br />');
});
Run Code Online (Sandbox Code Playgroud)

但是当你发送类似的东西时<script>alert(1);</script>,它会在每个客户端浏览器上执行.

这是一个严重的安全漏洞,我想尽可能地避免它.我见过人们逃避&, <, > and "角色,但我认为这还不够!

如何在我的聊天中100%确定没有XSS漏洞?

顺便说一下,我总是指定字符集来避免UTF-7攻击.

谢谢你的帮助.

Esa*_*ija 8

不要使用,.html()因为这基本上eval是类固醇 - 能够导致各种语言的解释.

文本总是被解释为文本:

$('#messages').append($("<div>", {
    text: data.message
}));
Run Code Online (Sandbox Code Playgroud)