一、XSS攻擊
Cross Site Scripting跨站腳本攻擊
利用js和DOM攻擊。
盜用cookie,獲取敏感信息
破壞正常頁面結構,插入惡意內容(廣告..)
劫持前端邏輯
DDos攻擊效果——分布式拒絕服務攻擊
Server Limit Dos,Http header過長,server返回400

二、攻擊原理和手段
攻擊方式
- 反射性
- 存儲性
1、反射型攻擊
發出請求時,XSS代碼出現在URL中,作為輸入提交到服務器端,服務器解析后響應,XSS代碼隨響應內容一起傳回給瀏覽器,最后瀏覽器解析執行XSS代碼。這個過程像一次反射,故叫反射型XSS。
- 明文URL中value就是攻擊代碼
- 服務器解析URL中XSS代碼並傳回
- 瀏覽器解析執行
傳播-》URL傳播-》短網址傳播
2、存儲型攻擊
存儲型XSS和反射型XSS的差別僅在於,提交的代碼會存儲在服務器端(數據庫,內存,文件系統等),下次請求目標頁面時不用再提交XSS代碼。
更隱蔽。
XSS存在的位置
- 反射型——URL中
- 存儲型——服務器端
XSS攻擊注入點:
- HTML節點內,通過用戶輸入動態生成
- HTML屬性,屬性是由用戶輸入


- JavaScript代碼

- 富文本(一大段HTML,有格式)
- 富文本得保留HTML,HTML有XSS攻擊風險
三、防御
1、瀏覽器自帶防御
ctx.set('X-Xss-Protection',0); 反射型參數出現在HTML內容或屬性中。
2、編碼轉義
不能讓所有用戶輸入保持原樣。
對用戶輸入的數據進行HTML Entity編碼。

用轉義字符代替字符。

轉義的時機
- 存儲時
- 顯示時
3、過濾
編碼后顯示時候還要解碼。解碼后顯示原樣代碼前過濾。
過濾掉不合法輸入,保證安全。
- 移除用戶上傳的DOM屬性,如onerror等。
- 移除用戶上傳的Style節點,Script節點,Iframe節點等。
onerror自動觸發xss。
style:body:display:none.
js對頁面有百分比操作權限。
iframe引入其它頁面資源。
通過xss注入的方式,引誘用戶觸發csrf攻擊。
3、CSP
