利用 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()
对安全解析用户输入毫无帮助。
跟进
如果攻击者可以访问 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()
对安全解析用户输入毫无帮助。