利用jquery html编码XSS

时间:2015-07-08 01:55:21

标签: javascript jquery security xss

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

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

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

     

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

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

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

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

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

2 个答案:

答案 0 :(得分:7)

有很多方法可以做到这一点,这是使用图像标记的一种方式。

&#13;
&#13;
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;
&#13;
&#13;

答案 1 :(得分:1)

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