利用 textarea jQuery HTML 解码

Exploiting jQuery HTML decoding using textarea

跟进 ...

如果攻击者可以访问 encodedText:

,则可以利用此代码
return $('<div/>').html(encodedText).text();

例如$("<div/>").html('<img src="X" onerror="alert(\'hi\');" />').text() 显示警报。

This answer 建议使用 textarea 来避免 XSS 漏洞:

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

这能够安全地处理之前的漏洞。

但是this answer表示使用textarea时仍然存在XSS漏洞:

I suggest using a safer, more optimized function

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

我的问题是:假设攻击者可以访问 encodedText,是否有任何浏览器可以利用 $('<textarea/>').html(encodedText); 到 运行 XSS?

老实说,我不会冒险,如果您处理任何需要加密或未加密的服务器端,会安全得多。

@haim770 给我的评论:

$('<textarea/>').html('<script>alert()</script>').text();

似乎 $('<textarea/>').html() 对安全解析用户输入毫无帮助。