2.4 jQuery技术

jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它可以封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。

1.jQuery基础

2006年1月,John Resig等创建了jQuery;8月,jQuery的第一个稳定版本出现,并且已经支持CSS选择符、事件处理和AJAX交互。jQuery的文档非常丰富,因为其轻量级的特性,文档并不复杂,随着新版本的发布,可以很快被翻译成多种语言,这也为jQuery的流行提供了条件。jQuery支持CSS1-3选择器,兼容Internet Explorer 6.0+、Firefox 2+、Safari 3.0+、Opera 9.0+和Chrome等浏览器。同时,jQuery有几千种丰富多彩的插件、大量有趣的扩展和出色的社区支持,这弥补了jQuery功能较少的不足,并为jQuery提供了众多非常有用的功能扩展。因其简单易学,jQuery很快成为当今最为流行的JavaScript库,成为开发网站等复杂度较低的Web应用程序的首选JavaScript库,并得到了不少大公司(如微软、谷歌)的支持。

2.jQuery安全攻击

jQuery的风险来源于对输入的数据没有进行有效性检验。客户端的JavaScript需要检验来源于服务器的数据和当前页面的用户输入,服务器端需要检验来源于用户端的数据。

jQuery的下列方法存在XSS攻击的风险,在使用前应该对输入的内容进行编码或检查,如表2-1所示。

表2-1 jQuery安全攻击示例代码

jQuery在AJAX时如果设定返回结果为JSON,则有JSON投毒的风险。如果服务器返回的数据为:

则会出现JSON中毒。

可以使用简单的Javascript语句来测试是否是JSON中毒:

3.jQuery安全防护

使用JSON2.js的JSON解释方法代替jQuery该部分的内容,或修改jQuery的eval部分,增加对JSON String的有效检验。另外,及时升级到安全的jQuery版本也非常重要。