發出請求時,XSS代碼出如今URL中,做爲輸入提交到服務器端,服務器端解析後響應,XSS代碼隨響應內容一塊兒傳回給瀏覽器,最後瀏覽器解析執行XSS代碼。這個過程想一次反射,故叫反射型XSS。html
// 適用範圍:後端接口會根據url後面拼接傳參的參數原樣返回的 // 瀏覽器植入XSS腳本 localhost:3000/?xss=<img%20src="null"%20onerror="alert(1)"/> // 植入文字 localhost:3000/?xss=<p%20onclick="alert(%27點我%27)">點我</p> // 嵌套網站 localhost:3000/?xss=<iframe%20src="//baidu.com/t.html"></iframe>
存儲型XSS和反射型XSS的差異僅在於,提交的代碼會存儲服務器端(數據庫,內存,文件系統等),下次請求目標頁面時不用再提交XSS代碼。數據庫
移除用戶上傳的DOM屬性,如onerror等,移除用戶,上傳的Style節點、Script節點、Iframe節點等後端
避免直接對HTML Entity解碼
使用DOM parse轉換,校訂不配對的DOM標籤瀏覽器