jQuery.append()、jQuery.html()存在的XSS漏洞
使⽤jQuery.append()、jQuery.html()⽅法时,如果其中内容包含<script>脚本⽽没有经过任何处理的话,会执⾏它。
简单的⽰例代码如下:
1var xssStr = '<script>console.log(1)</script>';
2 $('#test').html(xssStr);
控制台会打印出“1”。
同样的情况也存在于jQuery.append(),因为jQuery.html()内部也是调⽤jQuery.append()。
既然会存在执⾏<script>脚本的情况,那么就会有xss风险。
解决办法也很简单,将需要作为参数的字符串进⾏转义:
var xssEscapeStr = place(/</g, '<').replace(/>/g, '>');
jquery源码在线这样输出在页⾯上的只是单纯的⼀段<script>字符串,并未执⾏。
但这并不是jQuery的⼀个bug,查看jQuery源码,jQuery.append()对于<script>的处理似乎是有意为之。
jQuery.append()等⽅法在设计的初衷就考虑到了允许执⾏其中的脚本,所以,jQuery不建议使⽤如URL、cookie、input输⼊等内容作为append()的参数。
如果实在有需求,那就转义吧。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。