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的風險來源于對輸入的數據沒有進行有效性檢驗??蛻舳说腏avaScript需要檢驗來源于服務器的數據和當前頁面的用戶輸入,服務器端需要檢驗來源于用戶端的數據。
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版本也非常重要。