内容简介: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:把深度学习模型的表现迁移到传统机器学习模型获得高可解释性
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
About Face 4: 交互设计精髓
[美] 艾伦·库伯、[美] 罗伯特·莱曼、[美] 戴维·克罗宁、[美] 克里斯托弗·诺埃塞尔 / 倪卫国、刘松涛、杭敏、薛菲 / 电子工出版社 / 2015-10 / 118.00元
《About Face 4: 交互设计精髓》是《About Face 3:交互设计精髓》的升级版,此次升级把全书的结构重组优化,更加精练和易用;更新了一些适合当下时代的术语和实例,文字全部重新编译,更加清晰易读;增加了更多目标导向设计过程的细节,更新了现行实践,重点增加 移动和触屏平台交互设计,其实《About Face 4: 交互设计精髓》多数内容适用于多种平台。 《About F......一起来看看 《About Face 4: 交互设计精髓》 这本书的介绍吧!