利用textarea利用jQuery HTML解码

roo*_*oo2 6 javascript security xss jquery

跟进我的上一个问题 ......

如果攻击者有权访问以下内容,则可以利用此代码encodedText:

return $('<div/>').html(encodedText).text();
Run Code Online (Sandbox Code Playgroud)

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

此答案建议使用a textarea来避免XSS漏洞:

return $('<textarea/>').html(encodedText).text();
Run Code Online (Sandbox Code Playgroud)

这能够安全地处理以前的漏洞利用.

但是,此答案表明使用时仍存在XSS漏洞textarea:

我建议使用更安全,更优化的功能

不要使用jQuery.html().text()解码html实体,因为它不安全,因为用户输入永远不能访问DOM

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

roo*_*oo2 0

@haim770 的评论给了我:

$('<textarea/>').html('<script>alert()</script>').text();
Run Code Online (Sandbox Code Playgroud)

看起来$('<textarea/>').html()对于安全解析用户输入根本没有帮助。