何爲XSS攻擊
分類
反射型
請求參數中包含script等特殊的指令,隨響應返回至視圖,使得視圖層執行了對應的腳本
存儲型
參數中包含特殊的腳本,且被持久化(記錄在數據庫等地方),用戶再去使用時,讀取了這些文件,HTML解析後誤以爲是頁面腳本,
就會觸發執行
DOM
輸出點在 DOM 。XSS代碼可能是<script src="https://xxx.js">,載入第三方的惡意腳本,這些惡意腳本通常讀取用戶的cookie
常見攻擊方法
繞過XSS-Filter利用<>標籤注入Html/JavaScript代碼
利用HTML標籤的屬性值進行XSS攻擊。
空格、回車和Tab。關鍵字被空白隔開,例如:<img src=“javas cript:alert(/xss/);”/>
利用事件來執行跨站腳本。例如:<img src=“#” οnerrοr= “alert(1)”/>
利用CSS跨站。例如:body {backgrund-image: url(“javascript:alert(‘xss’)”)}
擾亂過濾規則。例如:<IMG SRC=“javaSCript: alert(/xss/);”/>
利用字符編碼,通過這種技巧,不僅能讓 XSS 代碼繞過服務端的過濾,還能更好地隱藏 Shellcode
拆分跨站法,將XSS攻擊的代碼拆分開來,適用於應用程序沒有過濾 XSS 關鍵字符(如<、>)卻對輸入字符長度有限制的情況下
DOM 型的XSS主要是由客戶端的腳本通過DOM動態地輸出數據到頁面上,它不依賴於提交數據到服務器,而是從客戶端獲得DOM中
的數據在本地執行。
容易導致 DOM 型的 XSS 的輸入源包括:
Document.URL、
Location(.pathname|.href|.search|.hash)、
Document.referrer、
Window.name、
Document.cookie、
localStorage/globalStorage
如何預防
XSS Filter
按照我們指定的規則去提交數據,不符合規則的內容全部攔截
html特殊字符轉義
顯示結果 | 描述 | 實體編號 |
---|---|---|
空格 |   ; | |
< | 小於 | < ; |
> | 大於 | > ; |
& | 和 | & ; |
'' | 引號 | " ; |
Http Only cookie
許多XSS攻擊的目的就是爲了獲取用戶的cookie,我們可以將重要的cookie標記爲http only,使得腳本無法訪問cookie