利用 jquery html 编码 XSS

Exploiting jquery html encoding XSS

阅读后 this question 用户警告说这种编码方法 html 是不安全的

    return $('<div/>').html(encodedText).text();

"don't use jQuery.html().text() to decode html entities as it's unsafe because user input should never have access to the DOM "

"I suggest using a safer, more optimized function"

此方法的目的是获取编码输入,即 Fish &amp; chips 并产生未编码的输出,即 Fish & Chips

据我了解,他们声称对于 encodedText 的某个值,可以执行 javascript。我试图将此设置 encodedText 重现为 <script>alert(1)</script> 和其他一些简单的攻击,但无法找到任何 XSS 漏洞的迹象。

我的问题是:在使用 $('<div/>').html(encodedText).text()

时,任何浏览器中是否存在明显的 xss 漏洞?

有很多方法可以做到这一点,这是带有图像标签的 onerror 的一种方法。

var x = $("<div/>").html('<img src="X" onerror="alert(\'hi\');" />').text();
console.log(x);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

$('<div/>').html('<img onerror="alert(0)" src=invalid>').text()