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

使用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()的参数。

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

时间: 2024-11-07 01:13:06

jQuery.append()、jQuery.html()存在的XSS漏洞的相关文章

Jquery append 生成的新表单,手动输入修改后,无法获取html真实代码的解决方案

function doSubmit() { $('#T_form select').each(function(){ $(this).find(':selected').attr('selected', true); }); $("#T_form :text").each(function(){ $(this).attr('value', $(this).val()); }); $("#T_form :radio").each(function(){ $(this)

jquery append()方法与html()方法用法区别

append(content):方法在被选元素的结尾(仍然在内部)插入指定内容,有很多朋友觉得append与html差不多,其它从英文意义上append是在原有基础上增加,而html中是替换当前所有内容. 定义和用法 append() 方法在被选元素的结尾(仍然在内部)插入指定内容. $(selector).append(content) 使用函数来附加内容 使用函数在指定元素的结尾插入内容. 语法 $(selector).append(function(index,html)) 实例代码: <

处理jQuery append加入的元素 绑定事件无效的方法

通过jquery append(或者before.after,一样)新添加进网页的元素,常用的事件不能触发,比如:append了id 为 abc 的元素,那么 $(#abc).click(function(){})是没有效果的. 解决方法:用on函数 一直以为on函数只有2个参数 正确格式: $("outerSelector").on('eventType','selector',function(){}): outerSelector 是一个一直存在的DOM, selector是你要

jquery append、prepend、before等等

1.jQuery append() 方法 jQuery append() 方法在被选元素的结尾插入内容. 实例 复制代码代码如下: $("p").append("Some appended text."); 2.jQuery prepend() 方法 jQuery prepend() 方法在被选元素的开头插入内容. 实例 复制代码代码如下: $("p").prepend("Some prepended text."); 3.a

jquery append

将已经存在的一个dom对象A,通过jquery append插入另一个dom对象B,将会改变dom树结构--即A成为了B的子元素. 举个例子: js: $(".table-container").append($(".table")); html: <div class="table-container"></div> <table id="table" class="table tab

jQuery append xmlNode 修改 xml 内容

jQuery append xmlNode 修改 xml 内容 http://blog.darkthread.net/blogs/darkthreadtw/archive/2009/04/29/jquery-xmlext-plugin.aspx jQuery读取xml内容是很简单的操作,但是,要修改就麻烦了.上面给了1个plugin,可以试试: 大家可以下載 jquery.xmlext.js回去玩,或是直接在 Mini jQuery Lab 用以下程式做測試: $.getScript("jque

jquery append()详解

1 http://www.365mini.com/page/jquery-append.htm 2 http://blog.csdn.net/chaiyining007/article/details/8213699 jq1.7.1这个版本为例. 首先我们来看下jq api的说明:向每个匹配的元素内部追加内容. 这个操作与对指定的元素执行appendChild方法,将它们添加到文档中的情况类似. 这个方法接收1个参数:content,接受类型有4种(3种从1.0就有了,function从1.4之

记一次WEB开发产生的XSS漏洞经历

项目采用的SSM,页面用的jsp格式(导致XSS产生的最大原因),其中用了很多EL表达式如${pageContext.request.contextPath},取根路径.${param.xx},取URL参数. 在第三方测评的时候,由于页面上使用了很多这种语法,所以被爆出了大量的XSS漏洞. 解决办法.使用JSTL标签库的c标签解决了EL表达式容易被XSS注入的问题. <!-- c标签输出的变量会自动转义特殊字符 --> <c:out value="${param.xx}&quo

WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案

对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,希望大家多多提意见. 对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避免后知后觉的犯下大错,专门参考大量前辈们的心得,小小的总结一下,欢迎大家拍砖啊 一.跨站脚本攻击(XSS) 跨站脚本攻击的原理 XSS又叫CSS (Cross Site Script) ,跨站脚本攻击.它指的是恶意攻击者往Web页面里插入恶意脚本代码,而程序对于用户输入内容未过滤,当用户浏览该页之时