馮 倩
(中南民族大學(xué),計(jì)算機(jī)科學(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),針對(duì)web應(yīng)用的網(wǎng)絡(luò)攻擊時(shí)常發(fā)生,因此web應(yīng)用的安全性也受到更多關(guān)注。根據(jù)最新的OWASP(Open Web Application Security Project)統(tǒng)計(jì),XSS漏洞依然是web應(yīng)用漏洞的第三名[1]。XSS攻擊是一種經(jīng)常出現(xiàn)在Web應(yīng)用程序中的計(jì)算機(jī)安全漏洞,由于web應(yīng)用程序?qū)τ脩舻妮斎脒^濾不足而產(chǎn)生[2]。攻擊者利用網(wǎng)站漏洞把惡意的腳本代碼注入到網(wǎng)頁之中,當(dāng)用戶瀏覽這些網(wǎng)頁時(shí)就會(huì)執(zhí)行其中的惡意代碼,對(duì)受害用戶造成 Cookie資料盜竊[3]、回話劫持[4]、釣魚欺騙[5]、網(wǎng)頁掛馬[6]等各種攻擊。XSS攻擊無論對(duì)網(wǎng)站還是對(duì)用戶造成的危害甚大,因此研究XSS攻擊防御顯得尤為重要,它能源頭上防止XSS攻擊。
XSS漏洞主要分為三類:反射性 XSS(reflected- XSS),存儲(chǔ)型XSS(stored-XSS,DOM型XSS(DOM- based XSS)[7]。反射型XSS漏洞是用戶提交的數(shù)據(jù)立即被服務(wù)器處理并返回一個(gè)響應(yīng)頁面,若用戶提交的數(shù)據(jù)沒有經(jīng)過有效地過濾就會(huì)產(chǎn)生反射型 XSS漏洞[8];存儲(chǔ)型XSS漏洞是服務(wù)器端沒有對(duì)用戶提交的數(shù)據(jù)沒做有效的過濾,并將數(shù)據(jù)存入數(shù)據(jù)庫,當(dāng)用戶瀏覽網(wǎng)頁時(shí),服務(wù)器從數(shù)據(jù)庫中加載數(shù)據(jù)并在網(wǎng)頁中顯示,從而形成存儲(chǔ)型XSS漏洞[9];DOM型XSS漏洞是瀏覽器在接受到HTML代碼后,由瀏覽器向網(wǎng)頁中嵌入惡意腳本代并執(zhí)行產(chǎn)生[10]。存儲(chǔ)型XSS漏洞是對(duì)web服務(wù)器進(jìn)行攻擊且不易發(fā)現(xiàn),造成的危害甚大,然而當(dāng)前沒有一個(gè)較好的檢測工具。
XSS漏洞挖掘的方法主要有靜態(tài)分析和動(dòng)態(tài)分析方法[11]。靜態(tài)分析是針對(duì)應(yīng)用程序的源碼進(jìn)行分析,通過分析源碼來發(fā)現(xiàn)可能存在的漏洞,屬于白盒測試。相關(guān)的自動(dòng)化檢測工具有Fortify SCA、XSSDetect、Pixy等[12]。這類檢測工具可以實(shí)現(xiàn)高效率自動(dòng)檢測。但靜態(tài)分析具有一定的局限性,它需要獲取目標(biāo)站點(diǎn)的源碼。動(dòng)態(tài)分析是在 Web站點(diǎn)運(yùn)行過程中,根據(jù)運(yùn)行結(jié)果推測Web站點(diǎn)中可能存在的漏洞,屬于黑盒測試[13]。動(dòng)態(tài)檢測方法具有準(zhǔn)確率高、針對(duì)性強(qiáng)和無需程序源代碼的優(yōu)勢,不足之處是不當(dāng)?shù)墓粝蛄靠赡茉斐奢^高的漏報(bào)率,因此要求攻擊向量樣本的選取要全面,以此來降低漏報(bào)率,同時(shí)過大的樣本又會(huì)造成檢測效率低下。
當(dāng)前對(duì)防御存儲(chǔ)型XSS攻擊的方法按其所處時(shí)間分為兩大類,在程序開發(fā)期進(jìn)行預(yù)防,主要有安全編碼規(guī)范,對(duì)用戶的輸入的信息進(jìn)行消毒處理[14];在程序完成后進(jìn)行漏洞檢測,主要有靜態(tài)分析,動(dòng)態(tài)分析。靜態(tài)分析有源代碼審查,污點(diǎn)分析,動(dòng)態(tài)分析有模糊測試和滲漏測試[14]。當(dāng)前也有一些研究者研究如何防御XSS攻擊,但都比較片面,本文深入研究XSS攻擊原理,并提出XSS防御策略。
本文主要完成了以下幾項(xiàng)工作:
1. 深入研究XSS攻擊工作原理和特點(diǎn);
2. 提出XSS防御策略;
3. 實(shí)現(xiàn)漏洞檢測工具并進(jìn)行實(shí)驗(yàn)測試。
反射型XSS漏洞是用戶提交的數(shù)據(jù)立即被服務(wù)器處理并返回一個(gè)響應(yīng)頁面,若用戶提交的數(shù)據(jù)沒有經(jīng)過有效地過濾就會(huì)產(chǎn)生反射型XSS漏洞[8],反射型XSS漏洞特點(diǎn)是漏洞在服務(wù)端形成,立即執(zhí)行且執(zhí)行一次、非持久化;存儲(chǔ)型XSS漏洞是服務(wù)器端沒有對(duì)用戶提交的數(shù)據(jù)做有效的過濾,并將數(shù)據(jù)存入數(shù)據(jù)庫,當(dāng)用戶瀏覽網(wǎng)頁時(shí),服務(wù)器從數(shù)據(jù)庫中加載數(shù)據(jù)并在網(wǎng)頁中顯示,從而形成存儲(chǔ)型XSS漏洞[9],存儲(chǔ)型XSS漏洞特點(diǎn)是漏洞在服務(wù)端形成,攻擊向量存入數(shù)據(jù)庫中、非立即執(zhí)行、可以執(zhí)行多次、持久化;DOM型XSS漏洞是瀏覽器在接受到HTML代碼后,由瀏覽器向網(wǎng)頁中嵌入惡意腳本代并執(zhí)行產(chǎn)生[10],DOM型XSS漏洞特點(diǎn)是漏洞在客戶端形成,立即執(zhí)行且執(zhí)行一次、非持久化。
黑客構(gòu)造一個(gè)有惡意代碼URL發(fā)給用戶,用戶點(diǎn)擊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 存儲(chǔ)型XSS攻擊原理圖Fig.2 Attack principle of stored xss
如圖3所示,黑客構(gòu)造一個(gè)有惡意代碼URL發(fā)給用戶,用戶點(diǎn)擊 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. 過濾 綦江县| 上饶市| 宁波市| 新绛县| 双柏县| 海城市| 淮阳县| 肃宁县| 延安市| 新巴尔虎左旗| 朝阳区| 林州市| 南溪县| SHOW| 海兴县| 进贤县| 扬州市| 双城市| 临邑县| 襄城县| 平阳县| 安图县| 台南县| 香格里拉县| 黄石市| 芮城县| 惠州市| 封开县| 阿巴嘎旗| 峨山| 怀宁县| 泾源县| 庆云县| 同仁县| 海门市| 双柏县| 翁牛特旗| 老河口市| 合山市| 玉山县| 穆棱市|