什么是xss攻擊?
XSS又叫CSS(Cross Site Script),跨站腳本攻擊:指惡意攻擊者往Web頁面里插入惡意Script代碼,當(dāng)用戶瀏覽該頁之時,嵌入其中Web里面的Script代碼會被執(zhí)行,從而達到惡意攻擊用戶的目的。
那么,當(dāng)當(dāng)前的網(wǎng)頁彈出1的時候,我們就知道,這個網(wǎng)頁是可以執(zhí)行js腳本的了,那么我們是不是就可以通過document去盜取一些信息,來幫助我們更進一步的去潛入進去呢?例如盜取一下cookie等。
先來看一下XSS有幾種吧:
持久型:一些可以提交的地方,文章評論,個人信息填寫等,如果沒有加過濾的話,嵌入的腳本就會被提交到服務(wù)器上,之后用戶每次訪問都會觸發(fā)腳本(例如圖中的alert(1),每個用戶打開都會彈出1)
非持久型:反射型跨站腳本漏洞,是最普遍的類型。大多是鏈接的方式,需要用戶點擊,才能返回腳本進行操作(用戶訪問服務(wù)器-->點擊跨站鏈接--->返回腳本代碼)
DOM型:客戶端的腳本程序可以通過DOM動態(tài)地檢查和修改頁面內(nèi)容,它不依賴于提交數(shù)據(jù)到服務(wù)器端,而從客戶端獲得DOM中的數(shù)據(jù)在本地執(zhí)行,如果DOM中的數(shù)據(jù)沒有經(jīng)過嚴格確認,就會產(chǎn)生DOM XSS漏洞(很少見emm,反正我沒見過hhh,日后見到了來補上,再細說)
XSS可能會帶來的危害
使網(wǎng)頁無法正常運行:這個就是我們上面中圖示的內(nèi)容,如果不僅僅是一個alert(1)呢?外部來一個永久循環(huán),這個網(wǎng)頁的彈窗就會永遠關(guān)不掉,導(dǎo)致無法正常的實現(xiàn)整體業(yè)務(wù)流程。
獲取cookie信息:這個我們也在上文中說過,如果網(wǎng)頁上可以執(zhí)行js腳本的話,那么我們是可以通過document.cookie來實現(xiàn)獲取用戶cookie的。
試想下如果像QQ空間說說中能夠?qū)懭離ss攻擊語句,那豈不是看了你說說的人的號你都可以登錄。
劫持流量惡意跳轉(zhuǎn):像這樣,在網(wǎng)頁中想辦法插入一句像這樣的語句,訪問的網(wǎng)頁就會直接跳轉(zhuǎn)到百度去。
<script>window.location.;</script>
XSS的攻擊應(yīng)該具備這樣的條件
網(wǎng)頁內(nèi)部有輸入框,內(nèi)容可存儲在服務(wù)器上
輸入框內(nèi)的內(nèi)容,才能被提交到他的服務(wù)器上,才能改變這個網(wǎng)頁內(nèi)部的文件內(nèi)容。
前提是這個輸入,沒有被過濾,才會成功哦!
可以自己寫demo嘗試一下,不建議直接在網(wǎng)絡(luò)上開搞emm,自己玩玩就行哈~
XSS防御措施(對用戶輸入內(nèi)容和服務(wù)端返回內(nèi)容進行過濾和轉(zhuǎn)譯)
現(xiàn)代大部分瀏覽器都自帶 XSS 篩選器(vue/react等主流框架已經(jīng)避免類似問題,vue舉例:不能在template中寫script標(biāo)簽,無法在js中通過ref或append等方式動態(tài)改變或添加script標(biāo)簽)
過濾:對諸如script、img、a等標(biāo)簽進行過濾。
編碼:像一些常見的符號,如<>在輸入的時候要對其進行轉(zhuǎn)換編碼,這樣做瀏覽器是不會對該標(biāo)簽進行解釋執(zhí)行的,同時也不影響顯示效果。
最后,學(xué)習(xí)網(wǎng)絡(luò)安全是為了保護好自己,在這個網(wǎng)絡(luò)時代,避免自己的信息被不法分子盜取,而不是說我們學(xué)會如何去攻擊別人。
更多關(guān)于網(wǎng)絡(luò)安全培訓(xùn)的問題,歡迎咨詢千鋒教育在線名師。千鋒教育擁有多年IT培訓(xùn)服務(wù)經(jīng)驗,采用全程面授高品質(zhì)、高體驗培養(yǎng)模式,擁有國內(nèi)一體化教學(xué)管理及學(xué)員服務(wù),助力更多學(xué)員實現(xiàn)高薪夢想。