【发布时间】: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, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"');
}
这就够了还是我错过了什么?甚至可以在 socket.js 中解决问题?
【问题讨论】:
-
你认为它有什么“xss漏洞”?
-
将我的问题更新到 sn-p 关于另一个具有此漏洞的主题。
-
逐字显示不受信任的数据是一个 XSS 漏洞。 socket.io 没有什么特别之处。
-
但是 socket.io 可以(并且应该逃避它)还是我错了?
-
考虑到这个问题已经是谷歌上“socket.io escape”的第二个结果(以及“socket.io xss”的最高结果),我猜它不是。为什么要这样做?如果它自动为您转义内容,那么使用它从受信任的来源获取 HTML 将变得不必要地困难。如果您想逃避某些事情,请自己做。