码迷,mamicode.com
首页 > 移动开发 > 详细

jQuery.append()、jQuery.html()存在的XSS漏洞

时间:2015-02-28 16:16:13      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

使用jQuery.append()、jQuery.html()方法时,如果其中内容包含<script>脚本而没有经过任何处理的话,会执行它。

简单的示例代码如下:

 

1 var xssStr = ‘<script>console.log(1)</script>‘;
2 $(‘#test‘).html(xssStr);

 

控制台会打印出“1”。

同样的情况也存在于jQuery.append(),因为jQuery.html()内部也是调用jQuery.append()。

既然会存在执行<script>脚本的情况,那么就会有xss风险。

解决办法也很简单,将需要作为参数的字符串进行转义:

 

var xssEscapeStr = xssStr.replace(/</g, ‘&lt;‘).replace(/>/g, ‘&gt;‘);

 

这样输出在页面上的只是单纯的一段<script>字符串,并未执行。

 

但这并不是jQuery的一个bug,查看jQuery源码,jQuery.append()对于<script>的处理似乎是有意为之。

jQuery.append()等方法在设计的初衷就考虑到了允许执行其中的脚本,所以,jQuery不建议使用如URL、cookie、input输入等内容作为append()的参数。

如果实在有需求,那就转义吧。

jQuery.append()、jQuery.html()存在的XSS漏洞

标签:

原文地址:http://www.cnblogs.com/yesw/p/4305443.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!