内容简介:jQuery是一个JavaScript UI框架,它为许多DOM操作功能提供了一个抽象层。它为开发人员提供了一个友好的界面,可以快速,动态地更新DOM,而无需重新加载整个页面。这是 jQuery 的优点及概念。但 jQuery 在有着诸多优点的同时,它本身也存一些安全问题,而所有的 jQuery 安全问题都围绕着那些被滥用的功能,jQurey 团队修改了行为来保护开发人员,下面来看看常见的 jQuery 安全问题的风险。$() 与 jQuery() 函数的最常见的书写形式是一样的,它返回一个jQuery对象
前言
jQuery是一个JavaScript UI框架,它为许多DOM操作功能提供了一个抽象层。它为开发人员提供了一个友好的界面,可以快速,动态地更新DOM,而无需重新加载整个页面。这是 jQuery 的优点及概念。
但 jQuery 在有着诸多优点的同时,它本身也存一些安全问题,而所有的 jQuery 安全问题都围绕着那些被滥用的功能,jQurey 团队修改了行为来保护开发人员,下面来看看常见的 jQuery 安全问题的风险。
一、 jQuery基础 - $()函数
$() 与 jQuery() 函数的最常见的书写形式是一样的,它返回一个jQuery对象:本质上要写入DOM的内容块。
在大多数情况下,jQuery函数将使用选择器,元素或对象作为参数。 由哈希(#)表示的选择器是当前DOM中现有html内容的标识符。 在下面的例子中,我们将使用jQuery html()函数来修改#myDivTag选择器的元素:
注意 “我的旧div标签文本!” 不显示。jQuery在运行时修改DOM来替换我们的div元素的文本:
再看看下面的例子:
根据这个例子可以看到, jQuery函数类似于getElementById()函数。 但是有一个重要的区别: jQuery接受的不仅仅是一个选择器ID,包括HTML和脚本内容。 比如:
二、jQuery 的 “XSS漏洞”
jQuery框架中没有已知的直接XSS漏洞(不包括jQuery插件)。但对于不受信任的内容引入到 jQuery 时,DOM (innerHTML,document.write()等)可能会被修改。
以下是最常见的漏洞代码示例:
在下面的页面中,我们可以直接在浏览器DOM中引入任意脚本,甚至绕过Chrome的 XSS审核 :
这个XSS向量是很常见的, jQuery最终改变了选择器处理特性,为防止这种攻击。我们阻止以“#”开始的HTML字符串,并从window.location.hash 中开始阻止 XSS
模拟XSS问题:Bug 9521 - $("#")
在以下使用jQuery 1.6.1的例子中,模拟了XSS错误。 这将以#字符开头,从location.hash属性中消耗的脚本:
代码成功执行。
在下面的示例中,我们将jQuery升级到1.6.3并运行相同的代码:
代码不再运行,也就是说 jQuery-1.6.3 这个版本可以阻止像刚刚这种:Bug 9521 - $("#") 的问题。
模拟XSS问题: Bug 11290 - $("element[attribute=''")
前面提到的 jQuery接受的不仅仅是一个选择器ID,还包括HTML和脚本内容。 jQuery可能会错误地识别一个包含 < 作为HTML片段的选择器,并尝试解析并创建相关的元素
如图:我们引入了 jQuery-1.6.3.js 版本,并定义了
,最后执行结果如下:会发现 Bug 11290 代码被执行了
但当我换成 jQuery-1.12.4.js 版本时,Bug 11290 代码不会执行,而会报错:
三、jQuery 的AJAX $ .get()响应处理弱点
jQuery ajax $ .get() 函数(不要与 .get() 函数混淆)用于使您可能猜到的ajax GET请求。发现在1.12.0之前的版本会自动评估响应内容,如果包含在响应中,则可能会执行脚本。
此行为可能会促进应用程序中的两个潜在漏洞。
- 将跨域请求交给不受信任域的应用程序可能会无意中执行脚本,否则可能会被视为安全内容。
- 如果可以将脚本注入到数据源中,则可以在XSS攻击中利用对可信API端点的请求。
示例:当我们在页面上发送请求:$.get('http://sakurity.com/jqueryxss') 时,攻击者可能会用 type="text/javascript" 来回应我们,并写上恶意的执行代码,如:
模拟 $.get()响应 问题: jQuery issue 2432 - 3rd party $.get() auto executes if content type is text/javascript
test.html 页面:
在 https://sakurity.com/jqueryxss 网站上恶意弹出一个层
最终 test.html 页面执行效果:会执行并弹出 https://sakurity.com/jqueryxss 网站上声明的恶意脚本
总结:
像几乎所有的现代软件一样,jQuery旨在强大而多功能。 有无数安全和合法的功能, 在滥用时可能会导致安全漏洞 。 这里描述的jQuery问题都是软件的结果,该软件按照设计运行,但是被不正确地执行。
另附上链接:http://research.insecurelabs.org/jquery/test/ 可查看 jQuery 各版本关于 Bug 9521、Bug 11290、jQuery issue 2432 问题
本文参考文章链接:https://www.virtuesecurity.com/blog/jquery-security-model/
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 深度学习模型可解释性初探
- RabbitMQ 之 AMQP 0-9-1 模型解释
- 凭什么相信你,我的CNN模型?关于CNN模型可解释性的思考
- LEMNA:针对安全应用的深度学习黑盒解释模型
- NAACL 2019论文独特视角|纠正归因谬误:注意力没有解释模型
- IBM NeurIPS 2018 poster:把深度学习模型的表现迁移到传统机器学习模型获得高可解释性
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Data Structures and Algorithm Analysis in Java
Mark A. Weiss / Pearson / 2006-3-3 / USD 143.00
As the speed and power of computers increases, so does the need for effective programming and algorithm analysis. By approaching these skills in tandem, Mark Allen Weiss teaches readers to develop wel......一起来看看 《Data Structures and Algorithm Analysis in Java》 这本书的介绍吧!