一、什么是跨站腳本漏洞?
從用戶控制的輸入到輸出之前,軟件沒(méi)有對(duì)其進(jìn)行過(guò)濾或沒(méi)有正確過(guò)濾,這些輸出用作向其他用戶提供服務(wù)的網(wǎng)頁(yè)。
二、跨站腳本(XSS)漏洞通常在哪些情況下發(fā)生?
1、不可信數(shù)據(jù)進(jìn)入網(wǎng)絡(luò)應(yīng)用程序,通常通過(guò)網(wǎng)頁(yè)請(qǐng)求;
2、網(wǎng)絡(luò)應(yīng)用程序動(dòng)態(tài)地生成一個(gè)帶有不可信數(shù)據(jù)的網(wǎng)頁(yè);
3、在網(wǎng)頁(yè)生成期間,應(yīng)用程序不會(huì)阻止Web瀏覽器可執(zhí)行的內(nèi)容數(shù)據(jù),例如java script、HTML標(biāo)簽、HTML屬性、鼠標(biāo)事件、Flash、ActiveX等;
4、受害者通過(guò)瀏覽器訪問(wèn)的網(wǎng)頁(yè)包含帶有不可信數(shù)據(jù)的惡意腳本;
5、由于腳本來(lái)自于通過(guò)web服務(wù)器發(fā)送的網(wǎng)頁(yè),因此受害者的web瀏覽器會(huì)在web服務(wù)器域的上下文中執(zhí)行惡意腳本;
6、違反web瀏覽器的同源策略,同源策略是一個(gè)域中的腳本不能訪問(wèn)或運(yùn)行其他域中的資源或代碼。
三、跨站腳本漏洞的構(gòu)成條件有哪些?
滿足一以下條件,就構(gòu)成了一個(gè)該類型的安全漏洞:
1、數(shù)據(jù)從不可靠來(lái)源(包含但不局限于不可靠用戶的輸入信息或是不可靠用戶可能更改的文件)進(jìn)入應(yīng)用程序;
2、該數(shù)據(jù)未經(jīng)過(guò)濾或不正確地過(guò)濾特殊字符后,直接使用。
四、跨站腳本漏洞會(huì)造成哪些后果?
關(guān)鍵詞:執(zhí)行未經(jīng)授權(quán)的代碼或命令;旁路保護(hù)機(jī)制;讀取應(yīng)用程序數(shù)據(jù)
1、盜取各類用戶賬號(hào)。如機(jī)器登錄賬號(hào)、用戶網(wǎng)銀賬號(hào)、各類管理員賬號(hào);
2、控制企業(yè)數(shù)據(jù)。包括讀取、篡改、添加、刪除企業(yè)敏感數(shù)據(jù)的能力;
3、盜竊企業(yè)重要的具有商業(yè)價(jià)值的資料;
4、非法轉(zhuǎn)賬;
5、強(qiáng)制發(fā)送電子郵件;
6、網(wǎng)站掛馬;
7、控制受害者機(jī)器向其它網(wǎng)站發(fā)起攻擊。
五、跨站腳本漏洞的防范和修補(bǔ)方法有哪些?
1、輸入驗(yàn)證:對(duì)輸入的信息進(jìn)行驗(yàn)證。仔細(xì)檢查每個(gè)輸入?yún)?shù),以確定允許的特定字符和格式。
2、輸出編碼:使用并指定下游組件可處理得輸出編碼格式。常用編碼包括ISO-8859-1,UTF-7和UTF-8。
六、跨站腳本漏洞樣例:
用 靜態(tài)代碼檢測(cè)分析上述程序代碼,則可以發(fā)現(xiàn)代碼中存在著“跨站腳本” 導(dǎo)致的代碼缺陷,如下圖:
跨站腳本在CWE中被編號(hào)為CWE-79: Improper Neutralization of Input DuringWeb Page Generation ('Cross-site Scripting')