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