【问题标题】:socket.io has xss vulnerability? How to solve this?socket.io 有 xss 漏洞?如何解决这个问题?
【发布时间】:2011-06-10 04:17:36
【问题描述】:

我认为 socket.io 存在 XSS 漏洞,我想知道如何解决这个问题。

查看我关于pubsub redis with socket.io 的帖子,它有一个/XSS 漏洞。

当你这样做时来自 redis-cli:

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

您将看到带有Hello world! 的警告对话框,它是BAD...

为了解决这个问题,我从 visionmedia 的玉库中复制了以下 sn-p 并想知道这是否足够?

/**
 * 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;');
}

这就够了还是我错过了什么?甚至可以在 socket.js 中解决问题?

【问题讨论】:

  • 你认为它有什么“xss漏洞”?
  • 将我的问题更新到 sn-p 关于另一个具有此漏洞的主题。
  • 逐字显示不受信任的数据是一个 XSS 漏洞。 socket.io 没有什么特别之处。
  • 但是 socket.io 可以(并且应该逃避它)还是我错了?
  • 考虑到这个问题已经是谷歌上“socket.io escape”的第二个结果(以及“socket.io xss”的最高结果),我猜它不是。为什么要这样做?如果它自动为您转义内容,那么使用它从受信任的来源获取 HTML 将变得不必要地困难。如果您想逃避某些事情,请自己做。

标签: node.js socket.io


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-01-04
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2021-04-10
    • 2022-11-09
    相关资源
    最近更新 更多