描述: 目標使用存在漏洞的JQuery版本。jQuery是一個快速、簡潔的JavaScript框架,具有獨特的鏈式語法和短小清晰的多功能接口;具有高效靈活的css選擇器,并且可對CSS選擇器進行擴展;擁有便捷的插件擴展機制和豐富的插件。然而在JQuery的諸多發(fā)行版本中,存在著DOM-based XSS(跨站腳本攻擊的一種)漏洞,易被攻擊者利用??缯灸_本攻擊漏洞,英文名稱Cross Site Scripting,簡稱CSS又叫XSS。它指的是惡意攻擊者向Web頁面中插入一段惡意代碼,當用戶瀏覽該頁面時,嵌入到Web頁面中的惡意代碼就會被執(zhí)行,從而達到惡意攻擊者的特殊目的。
危害:
攻擊者可根據(jù)目標使用的JQuery版本判斷是否存在XSS漏洞,并構(gòu)造惡意代碼插入目標頁面,當用戶瀏覽該頁面時,嵌入的惡意代碼就會執(zhí)行,可能會造成Cookie被盜取進而引發(fā)更多損失。
解決方案:
方案一:
1. 過濾用戶輸入的內(nèi)容,檢查用戶輸入的內(nèi)容中是否有非法內(nèi)容。如<>(尖括號)、"(引號)、 '(單引號)、%(百分比符號)、;(分號)、()(括號)、&(& 符號)、+(加號)等。
2. 嚴格控制輸出
可以利用下面這些函數(shù)對出現(xiàn)xss漏洞的參數(shù)進行過濾
1、htmlspecialchars() 函數(shù),用于轉(zhuǎn)義處理在頁面上顯示的文本。
2、htmlentities() 函數(shù),用于轉(zhuǎn)義處理在頁面上顯示的文本。
3、strip_tags() 函數(shù),過濾掉輸入、輸出里面的惡意標簽。
4、header() 函數(shù),使用header("Content-type:application/json"); 用于控制 json 數(shù)據(jù)的頭部,不用于瀏覽。
5、urlencode() 函數(shù),用于輸出處理字符型參數(shù)帶入頁面鏈接中。
6、intval() 函數(shù)用于處理數(shù)值型參數(shù)輸出頁面中。
7、自定義函數(shù),在大多情況下,要使用一些常用的 html 標簽,以美化頁面顯示,如留言、小紙條。那么在這樣的情況下,要采用白名單的方法使用合法的標簽顯示,過濾掉非法的字符。
各語言示例:
PHP的htmlentities()或是htmlspecialchars()。
Python的cgi.escape()。
ASP的Server.HTMLEncode()。
ASP.NET的Server.HtmlEncode()或功能更強的Microsoft Anti-Cross Site Scripting Library
Java的xssprotect(Open Source Library)。
Node.js的node-validator。
方案二:使用開源的漏洞修復(fù)插件。( 需要站長懂得編程并且能夠修改服務(wù)器代碼 )