劉達(dá)
1 引言
跨站腳本攻擊(Cross SiteScript,XSS)是指惡意的攻擊者利用Web程序的安全漏洞,從客戶端提交有含有惡意代碼的表單內(nèi)容或向他人發(fā)送含有惡意腳本的超鏈接以盜取用戶Cookie信息,甚至獲得管理員權(quán)限的網(wǎng)絡(luò)攻擊手段。目前針對XSS攻擊的防御手段主要有提高瀏覽器的安全性能,在Web服務(wù)器端部署用戶輸入過濾器等方式,但面對XSS日新月異的攻擊手段,防御的一方總是處于被動。針對上述問題,本文對如何在開發(fā)環(huán)節(jié)中對HTML網(wǎng)頁的輸入,輸出數(shù)據(jù)進(jìn)行編碼以防范XSS攻擊進(jìn)行研究,并提出了相應(yīng)的編碼規(guī)范。
2 XSS攻擊原理
XSS跨站腳本是指惡意攻擊者巧妙利用Web應(yīng)用程序在數(shù)據(jù)輸入和輸出過程中漏洞,將惡意代碼嵌入網(wǎng)頁或RUL,當(dāng)用戶瀏覽網(wǎng)頁或點(diǎn)擊鏈接訪問網(wǎng)站時,惡意代碼被執(zhí)行,用戶遭到攻擊。XSS攻擊類型可分為DOM Based XSS和Stored XSS。
2.1 DOM Based XSS
DOM Based XSS是一種基于網(wǎng)頁DOM結(jié)構(gòu)的攻擊。攻擊者在研究了目標(biāo)用戶所訪問的網(wǎng)站URL結(jié)構(gòu)并猜測出目標(biāo)網(wǎng)站的頁面處理方式后,向目標(biāo)用戶發(fā)送含有惡意腳本的目標(biāo)網(wǎng)站鏈接。例如,網(wǎng)站A的Url結(jié)構(gòu)是根據(jù)Content參數(shù)返回顯示頁面的。攻擊者則可設(shè)計(jì)如下含惡意腳本的鏈接:
http://www.a.com?content=
該鏈接被執(zhí)行后,用戶的Cookie信息被攻擊者獲取,且頁面將跳轉(zhuǎn)至攻擊搭建的B網(wǎng)站,繼續(xù)騙取用戶的賬號與口令。這種攻擊方式又被稱為反射型XSS。
2.2 Stored XSS存儲式XSS漏洞
Stored XSS存儲式漏洞,又稱為持久性跨站腳本攻擊,其原理是通過網(wǎng)頁表單將惡意腳擊提交到網(wǎng)站服務(wù)器嵌入Web頁面中,所有瀏覽該頁面的用戶客戶端都將受到惡意腳本的攻擊。
例如,網(wǎng)站A的留言板未對用戶輸入內(nèi)容進(jìn)行完善的過濾,惡意攻擊者在留言板中輸入惡意代碼
網(wǎng)站的輸出機(jī)制未過濾