馮 倩
(中南民族大學(xué),計算機科學(xué)學(xué)院,湖北 武漢 430074)
隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,web應(yīng)用越來越流行,現(xiàn)如今web應(yīng)用已進(jìn)入我們生活的方方面面。我們已經(jīng)習(xí)慣網(wǎng)上購物,逛論壇,刷微博,發(fā)帖等web應(yīng)用。然而web安全問題不斷出現(xiàn),針對web應(yīng)用的網(wǎng)絡(luò)攻擊時常發(fā)生,因此web應(yīng)用的安全性也受到更多關(guān)注。根據(jù)最新的OWASP(Open Web Application Security Project)統(tǒng)計,XSS漏洞依然是web應(yīng)用漏洞的第三名[1]。XSS攻擊是一種經(jīng)常出現(xiàn)在Web應(yīng)用程序中的計算機安全漏洞,由于web應(yīng)用程序?qū)τ脩舻妮斎脒^濾不足而產(chǎn)生[2]。攻擊者利用網(wǎng)站漏洞把惡意的腳本代碼注入到網(wǎng)頁之中,當(dāng)用戶瀏覽這些網(wǎng)頁時就會執(zhí)行其中的惡意代碼,對受害用戶造成 Cookie資料盜竊[3]、回話劫持[4]、釣魚欺騙[5]、網(wǎng)頁掛馬[6]等各種攻擊。XSS攻擊無論對網(wǎng)站還是對用戶造成的危害甚大,因此研究XSS攻擊防御顯得尤為重要,它能源頭上防止XSS攻擊。
XSS漏洞主要分為三類:反射性 XSS(reflected- XSS),存儲型XSS(stored-XSS,DOM型XSS(DOM- based XSS)[7]。反射型XSS漏洞是用戶提交的數(shù)據(jù)立即被服務(wù)器處理并返回一個響應(yīng)頁面,若用戶提交的數(shù)據(jù)沒有經(jīng)過有效地過濾就會產(chǎn)生反射型 XSS漏洞[8];存儲型XSS漏洞是服務(wù)器端沒有對用戶提交的數(shù)據(jù)沒做有效的過濾,并將數(shù)據(jù)存入數(shù)據(jù)庫,當(dāng)用戶瀏覽網(wǎng)頁時,服務(wù)器從數(shù)據(jù)庫中加載數(shù)據(jù)并在網(wǎng)頁中顯示,從而形成存儲型XSS漏洞[9];DOM型XSS漏洞是瀏覽器在接受到HTML代碼后,由瀏覽器向網(wǎng)頁中嵌入惡意腳本代并執(zhí)行產(chǎn)生[10]。存儲型XSS漏洞是對web服務(wù)器進(jìn)行攻擊且不易發(fā)現(xiàn),造成的危害甚大,然而當(dāng)前沒有一個較好的檢測工具。
XSS漏洞挖掘的方法主要有靜態(tài)分析和動態(tài)分析方法[11]。靜態(tài)分析是針對應(yīng)用程序的源碼進(jìn)行分析,通過分析源碼來發(fā)現(xiàn)可能存在的漏洞,屬于白盒測試。相關(guān)的自動化檢測工具有Fortify SCA、XSSDetect、Pixy等[12]。這類檢測工具可以實現(xiàn)高效率自動檢測。但靜態(tài)分析具有一定的局限性,它需要獲取目標(biāo)站點的源碼。動態(tài)分析是在 Web站點運行過程中,根據(jù)運行結(jié)果推測Web站點中可能存在的漏洞,屬于黑盒測試[13]。動態(tài)檢測方法具有準(zhǔn)確率高、針對性強和無需程序源代碼的優(yōu)勢,不足之處是不當(dāng)?shù)墓粝蛄靠赡茉斐奢^高的漏報率,因此要求攻擊向量樣本的選取要全面,以此來降低漏報率,同時過大的樣本又會造成檢測效率低下。
當(dāng)前對防御存儲型XSS攻擊的方法按其所處時間分為兩大類,在程序開發(fā)期進(jìn)行預(yù)防,主要有安全編碼規(guī)范,對用戶的輸入的信息進(jìn)行消毒處理[14];在程序完成后進(jìn)行漏洞檢測,主要有靜態(tài)分析,動態(tài)分析。靜態(tài)分析有源代碼審查,污點分析,動態(tài)分析有模糊測試和滲漏測試[14]。當(dāng)前也有一些研究者研究如何防御XSS攻擊,但都比較片面,本文深入研究XSS攻擊原理,并提出XSS防御策略。
本文主要完成了以下幾項工作:
1. 深入研究XSS攻擊工作原理和特點;
2. 提出XSS防御策略;
3. 實現(xiàn)漏洞檢測工具并進(jìn)行實驗測試。
反射型XSS漏洞是用戶提交的數(shù)據(jù)立即被服務(wù)器處理并返回一個響應(yīng)頁面,若用戶提交的數(shù)據(jù)沒有經(jīng)過有效地過濾就會產(chǎn)生反射型XSS漏洞[8],反射型XSS漏洞特點是漏洞在服務(wù)端形成,立即執(zhí)行且執(zhí)行一次、非持久化;存儲型XSS漏洞是服務(wù)器端沒有對用戶提交的數(shù)據(jù)做有效的過濾,并將數(shù)據(jù)存入數(shù)據(jù)庫,當(dāng)用戶瀏覽網(wǎng)頁時,服務(wù)器從數(shù)據(jù)庫中加載數(shù)據(jù)并在網(wǎng)頁中顯示,從而形成存儲型XSS漏洞[9],存儲型XSS漏洞特點是漏洞在服務(wù)端形成,攻擊向量存入數(shù)據(jù)庫中、非立即執(zhí)行、可以執(zhí)行多次、持久化;DOM型XSS漏洞是瀏覽器在接受到HTML代碼后,由瀏覽器向網(wǎng)頁中嵌入惡意腳本代并執(zhí)行產(chǎn)生[10],DOM型XSS漏洞特點是漏洞在客戶端形成,立即執(zhí)行且執(zhí)行一次、非持久化。
黑客構(gòu)造一個有惡意代碼URL發(fā)給用戶,用戶點擊URL,服務(wù)器將惡意代碼發(fā)送給瀏覽器,并在瀏覽器中執(zhí)行,從而造成攻擊。
圖1 反射型XSS攻擊原理圖Fig.1 Attack principle of reflective xss
黑客提交惡意代碼到 web服務(wù)器,web服務(wù)器將惡意代碼存放在數(shù)據(jù)庫中,當(dāng)用戶瀏覽頁面是,web服務(wù)器從數(shù)據(jù)庫中讀取惡意代碼并發(fā)給瀏覽器,惡意代碼在用戶瀏覽器中執(zhí)行,從而造成攻擊。
圖2 存儲型XSS攻擊原理圖Fig.2 Attack principle of stored xss
如圖3所示,黑客構(gòu)造一個有惡意代碼URL發(fā)給用戶,用戶點擊 URL,瀏覽器讀取 URL中的惡意代碼并執(zhí)行,從而造成攻擊。
XSS防御主要有如圖4中方式。
圖3 DOM型XSS攻擊原理圖Fig.3 Attack principle of dom xss
圖4 XSS防御圖Fig.4 Defense of stored xss
將XSS攻擊向量寄生的宿主(HTML標(biāo)簽,事件,屬性)過濾掉,XSS攻擊向量便不能發(fā)生。
1. 過濾 宁蒗| 南郑县| 乌苏市| 绵阳市| 鹤山市| 安龙县| 巴塘县| 富宁县| 南平市| 股票| 社会| 全椒县| 兰考县| 嫩江县| 土默特左旗| 陇西县| 丹东市| 河源市| 新乡县| 卫辉市| 云南省| 潞西市| 芷江| 黄浦区| 元氏县| 鹤壁市| 沁水县| 大悟县| 长兴县| 银川市| 丰镇市| 桑日县| 开封市| 新干县| 甘泉县| 平陆县| 南丰县| 屏山县| 兰西县| 盐城市| 泌阳县|