在阅读this question后,用户警告说这种编码html的方法不安全
return $('<div/>').html(encodedText).text();
“不要使用jQuery.html()。text()解码html实体,因为它不安全 因为用户输入永远不应该访问DOM “
“我建议使用更安全,更优化的功能”
此方法的目的是采用编码输入,即Fish & chips
并产生未编码的输出,即Fish & Chips
据我了解,他们声称对于encodedText
的某些值,可以执行javascript。我尝试将此设置encodedText
重现为<script>alert(1)</script>
以及其他一些简单的攻击,并且无法找到任何XSS漏洞的迹象。
我的问题是:使用$('<div/>').html(encodedText).text()
答案 0 :(得分:7)
有很多方法可以做到这一点,这是使用图像标记的一种方式。
var x = $("<div/>").html('<img src="X" onerror="alert(\'hi\');" />').text();
console.log(x);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
&#13;
答案 1 :(得分:1)
$('<div/>').html('<img onerror="alert(0)" src=invalid>').text()