跨站腳本攻擊xss的三大類型:1、持久型跨站;2、非持久型跨站;3、dom跨站。持久型跨站是最直接的危害類型,跨站代碼存儲(chǔ)在服務(wù)器;非持久型跨站是反射型跨站腳本漏洞,這是最普遍的類型。
一、跨站腳本攻擊類型:
(1)持久型跨站:最直接的危害類型,跨站代碼存儲(chǔ)在服務(wù)器(數(shù)據(jù)庫(kù))。
(2)非持久型跨站:反射型跨站腳本漏洞,最普遍的類型。用戶訪問服務(wù)器-跨站鏈接-返回跨站代碼。
(3)DOM跨站(DOM XSS):DOM(document Object model文檔對(duì)象模型),客戶端腳本處理邏輯導(dǎo)致的安全問題。
(如果您想了解更多相關(guān)問題,可以訪問php中文網(wǎng)。)
二、如何預(yù)防?
從網(wǎng)站開發(fā)者角度,如何防護(hù)XSS攻擊?
對(duì)XSS最佳的防護(hù)應(yīng)該結(jié)合以下兩種方法:
1、驗(yàn)證所有輸入數(shù)據(jù),有效檢測(cè)攻擊;
2、對(duì)所有輸出數(shù)據(jù)進(jìn)行適當(dāng)?shù)木幋a,以防止任何已成功注入的腳本在瀏覽器端運(yùn)行。
具體如下:
輸入驗(yàn)證:某個(gè)數(shù)據(jù)被接受為可被顯示或存儲(chǔ)之前,使用標(biāo)準(zhǔn)輸入驗(yàn)證機(jī)制,驗(yàn)證所有輸入數(shù)據(jù)的長(zhǎng)度、類型、語(yǔ)法以及業(yè)務(wù)規(guī)則。
輸出編碼:數(shù)據(jù)輸出前,確保用戶提交的數(shù)據(jù)已被正確進(jìn)行entity編碼,建議對(duì)所有字符進(jìn)行編碼而不僅局限于某個(gè)子集。
明確指定輸出的編碼方式:不要允許攻擊者為你的用戶選擇編碼方式(如ISO 8859-1或 UTF 8)。
注意:黑名單驗(yàn)證方式的局限性:僅僅查找或替換一些字符(如””或類似”script”的關(guān)鍵字),很容易被XSS變種攻擊繞過驗(yàn)證機(jī)制。
警惕規(guī)范化錯(cuò)誤:驗(yàn)證輸入之前,必須進(jìn)行解碼及規(guī)范化以符合應(yīng)用程序當(dāng)前的內(nèi)部表示方法。請(qǐng)確定應(yīng)用程序?qū)ν惠斎氩蛔鰞纱谓獯a。
從網(wǎng)站用戶角度,如何防護(hù)XSS攻擊?
當(dāng)你打開一封Email或附件、瀏覽論壇帖子時(shí),可能惡意腳本會(huì)自動(dòng)執(zhí)行,因此,在做這些操作時(shí)一定要特別謹(jǐn)慎。建議在瀏覽器設(shè)置中關(guān)閉JavaScript。如果使用IE瀏覽器,將安全級(jí)別設(shè)置到“高”。
這里需要再次提醒的是,XSS攻擊其實(shí)伴隨著社會(huì)工程學(xué)的成功應(yīng)用,需要增強(qiáng)安全意識(shí),只信任值得信任的站點(diǎn)或內(nèi)容??梢酝ㄟ^一些檢測(cè)工具進(jìn)行xss的漏洞檢測(cè)。針對(duì)xss的漏洞帶來的危害是巨大,如有發(fā)現(xiàn),應(yīng)立即修復(fù)漏洞。