socket.io XSS 漏洞?如何解决这个问题?

socket.io has xss vulnerability? How to solve this?

提问人:Alfred 提问时间:1/17/2011 最后编辑:CommunityAlfred 更新时间:3/18/2011 访问量:4892

问:

我相信 socket.io 有一个XSS漏洞,我想知道如何解决这个问题。

请参阅我关于带有 socket.io 的 pubsub redis 的帖子,该帖子具有 XSS 漏洞。

从 redis-cli 执行以下操作:

publish pubsub "<script>alert('Hello world!');</script>"

您将看到一个警报对话框,其中有 BAD...Hello world!

为了解决这个问题,我从visionmedia的jade库中复制了以下片段,想知道这是否足够?

/**
 * Escape the given string of `html`.
 *
 * @param {String} html
 * @return {String}
 * @api private
 */

function sanitize(html){
    return String(html)
        .replace(/&(?!\w+;)/g, '&amp;')
        .replace(/</g, '&lt;')
        .replace(/>/g, '&gt;')
        .replace(/"/g, '&quot;');
}

这够了吗,还是我遗漏了什么?也许甚至在套接字.js中解决问题?

节点.js socket.io

评论

2赞 Anon. 1/17/2011
你认为它有什么“xss漏洞”?
0赞 Alfred 1/17/2011
将我的问题更新为另一个具有此漏洞的主题的片段。
3赞 Anon. 1/17/2011
逐字显示不受信任的数据是一个 XSS 漏洞。没有什么特别的 socket.io。
0赞 Alfred 1/17/2011
但是 socket.io 可以(并且应该逃避它)还是我错了?
9赞 Anon. 1/17/2011
考虑到这个问题已经是谷歌上“socket.io 逃脱”的第二个结果(以及“socket.io xss”的顶级结果),我猜它不是。为什么要这样做?如果它自动为您转义了内容,这将使使用它从受信任的来源获取 HTML 变得不必要地困难。如果你想逃避一些东西,就自己动手。

答:

5赞 yojimbo87 3/18/2011 #1

有一个 node-validator 库,它为 XSS 提供了清理方法。