jQuery返回到创建DOM对象,如果搜索是空的

jQuery Fallback to Creating DOM Object If Search Is Empty?

本文关键字:搜索 如果 对象 返回 创建 DOM jQuery      更新时间:2023-09-26

我刚刚发现了一个导致XSS的奇怪案例,但我真的不明白为什么。所讨论的代码正在搜索具有如下匹配名称的标记:

var varName = getCookie('cookiename');
var link = $('.someclass a[name=' + varName + ']'); 

如果该cookie碰巧包含XSS,则执行该jQuery代码将导致XSS被执行。我理解它本身,像$('')将被添加到DOM并执行,根据我在文档中阅读的内容。我不明白为什么上面的代码,用相同的img标签作为变量值,有相同的结果。它不应该只导致一个空变量吗?

在旧版本的jQuery中,下面的jQuery选择器会创建一个div:

$('.someclass a[name=' + '<div>Hello World!</div>' + ']')

然而,在最近的jQuery版本中,jQuery将不会创建一个dom片段,除非html字符串以<开头,这完全避免了这个问题。

因此,要么在将输入放入选择器之前验证它,要么更新jQuery。

http://jsfiddle.net/g33n57vs/

相关文章: