选择器在我的网站上被解释为HTML。攻击者可以轻易利用这个吗?

时间:2015-11-17 11:46:47

标签: javascript jquery html security

我的网站只能通过https访问。

它不会从其他来源加载任何内容。所以所有内容都在本地网络服务器上。

使用Retire.js Chrome插件我收到一条警告,我所包含的jquery 1.8.3容易受到' Selector解释为HTML' (jQuery bug 11290

我正在努力推动快速升级,但我需要一些更具体的信息来激励升级到权力。 我的问题是:

  • 鉴于上述情况,我应该担心吗?

  • 这会导致XSS类型的攻击吗?

2 个答案:

答案 0 :(得分:5)

错误告诉你的是,jQuery可能错误地将包含<的选择器识别为HTML片段,并尝试解析并创建相关元素。

所以漏洞就是这样,一个巧妙设计的选择器,如果然后传递给jQuery,可以定义一个script标签,然后在页面的上下文中执行任意脚本代码,可能会来自页面的私人信息,并将其发送给有恶意(或仅仅是非常有意义)的人。

这在用户A可以编写选择器时非常有用,该选择器稍后将在用户B的会话中提供给jQuery,让用户A从用户B的页面窃取信息。 (如果用户可以在自己的页面上以这种方式进行jQuery,那就无所谓了;他们可以通过控制台做更糟糕的事情,或者使用&# 34;另存为&#34;。)

所以:如果您的代码中没有任何内容允许用户提供将被保存然后由其他用户检索并传递给jQuery的选择器,我就不会那么担心了。如果确实如此(有或没有修复bug),我会仔细检查那些选择器字符串 。我说&#34;有或没有错误&#34;因为如果你没有过滤掉用户输入的内容,他们仍然只能提供一个HTML片段,其中第一个非空白字符是<,这仍然会导致jQuery将其解析为HTML片段

答案 1 :(得分:1)

作为Retire.js的作者让我对此有所了解。旧版本的jQuery有两个缺点,但这些漏洞本身并不是漏洞。这取决于jQuery的使用方式。这里显示了滥用错误的两个例子:research.insecurelabs.org/jquery/test /

这两个例子是:

$("#<img src=x onerror=...>") 

$("element[attribute='<img src=x onerror=...>'")

如果您执行以下操作,通常会出现问题:

$(location.hash)

当单页网站开始出现时,这是许多网站的一种相当普遍的模式。

当且仅当您将不受信任的用户数据放在jQuery选择器函数中时,这才会成为问题。

是的,最终的结果是XSS,如果该网站实际上是脆弱的。 https不会保护您免受这些缺陷。