1. 什么是XSS?
CSRF(Cross-site request forgery),中文名稱:跨站請求偽造。
將惡意代碼植入到提供給其他用戶使用的頁面中,簡單的理解為一種javascript代碼注入。
2. XSS危害
- 掛馬
- 盜取用戶Cookie。
- DOS(拒絕服務(wù))客戶端瀏覽器。
- 釣魚攻擊,高級的釣魚技巧。
- 刪除目標(biāo)文章、惡意篡改數(shù)據(jù)、嫁禍。
- 劫持用戶Web行為,甚至進(jìn)一步滲透內(nèi)網(wǎng)。
- 爆發(fā)Web2.0蠕蟲。
- 蠕蟲式的DDoS攻擊。
- 蠕蟲式掛馬攻擊、刷廣告、刷瀏量、破壞網(wǎng)上數(shù)據(jù)
3.XSS分類
XSS分為三類:
- 反射型XSS(非持久型)
- 發(fā)出請求時,XSS代碼出現(xiàn)在URL中,作為輸入提交到服務(wù)器端,服務(wù)器端解析后響應(yīng),XSS代碼隨響應(yīng)內(nèi)容一起傳回給瀏覽器,最后瀏覽器解析執(zhí)行XSS代碼。這個過程像一次反射,故叫反射型XSS。
- 存儲型XSS(持久型)
- 存儲型XSS和反射型XSS的差別僅在于,提交的代碼會存儲在服務(wù)器端(數(shù)據(jù)庫,內(nèi)存,文件系統(tǒng)等),下次請求目標(biāo)頁面時不用再提交XSS代碼。
- DOM XSS(客戶端)
- DOM XSS和反射型XSS、存儲型XSS的差別在于DOM XSS的代碼并不需要服務(wù)器參與,觸發(fā)XSS靠的是瀏覽器端的DOM解析,完全是客戶端的事情。
4.XSS的防御措施:
- 過濾轉(zhuǎn)義輸入輸出
- 避免使用eval、new Function等執(zhí)行字符串的方法,除非確定字符串和用戶輸入無關(guān)
- 使用cookie的httpOnly屬性,加上了這個屬性的cookie字段,js是無法進(jìn)行讀寫的
- 使用innerHTML、document.write的時候,如果數(shù)據(jù)是用戶輸入的,那么需要對象關(guān)鍵字符進(jìn)行過濾與轉(zhuǎn)義