反射型XSS(也叫非持久型):惡意JavaScript腳本屬于用戶(hù)發(fā)送給網(wǎng)站請(qǐng)求中的一部分,隨后網(wǎng)站又將這部分返回給用戶(hù),惡意腳本在頁(yè)面中被執(zhí)行,一般發(fā)生在前后端一體的應(yīng)用中,服務(wù)端邏輯會(huì)改變最終的網(wǎng)頁(yè)代碼。
基于DOM的XSS:這種攻擊不需要經(jīng)過(guò)服務(wù)器,網(wǎng)頁(yè)本身的JavaScript也是可以改變HTML的,黑客正是利用這一點(diǎn)來(lái)實(shí)現(xiàn)插入惡意腳本。
存儲(chǔ)型XSS(也叫持久型XSS):黑客將惡意JavaScript腳本長(zhǎng)期保存在服務(wù)端數(shù)據(jù)庫(kù)中,用戶(hù)一旦訪(fǎng)問(wèn)相關(guān)頁(yè)面數(shù)據(jù),惡意腳本就會(huì)被執(zhí)行。常見(jiàn)于搜索、微博、社區(qū)貼吧評(píng)論等。
區(qū)別:反射型的XSS 的惡意腳本存在URL 里,存儲(chǔ)型XSS 的惡意代碼存在數(shù)據(jù)庫(kù)里。而基于DOM型的XSS攻擊中,取出和執(zhí)行惡意代碼由瀏覽器端完成,屬于前端JavaScript自身的安全漏洞,其他兩種XSS都屬于服務(wù)端的安全漏洞。