XSS 類型
-
存儲型 XSS
- 特征:惡意腳本存儲在服務器(如數據庫),用戶訪問受感染頁面時觸發。
- 場景:用戶評論、論壇帖子等持久化內容。
- 影響范圍:所有訪問該頁面的用戶。
-
反射型 XSS
- 特征:惡意腳本通過URL參數傳遞,服務器返回包含腳本的響應,用戶點擊惡意鏈接后觸發。
- 場景:搜索框、錯誤消息等動態返回用戶輸入的場景。
- 傳播方式:釣魚鏈接、社交工程。
-
DOM 型 XSS
- 特征:完全在客戶端執行,通過修改DOM觸發,無需與服務器交互。
- 場景:前端從URL參數或本地存儲讀取數據并動態更新頁面。
- 檢測難點:傳統服務端防御無法捕獲。
防御措施
示例代碼
安全輸出到HTML
// 不安全:直接插入未轉義內容
element.innerHTML = userInput;// 安全:使用textContent或轉義函數
element.textContent = userInput;
// 或使用轉義庫(如Lodash的_.escape)
element.innerHTML = _.escape(userInput);
CSP配置
Content-Security-Policy: default-src 'self'; script-src 'self' https://apis.example.com; object-src 'none';
總結
XSS防御需多層面結合:
- 轉義:根據輸出位置選擇合適方法。
- 驗證:前后端雙重檢查輸入合法性。
- 策略:通過CSP限制資源加載。
- 框架:利用現代框架的安全特性。
- 意識:避免高危API,遵循安全最佳實踐。
通過綜合應用這些措施,可顯著降低XSS風險,保護用戶數據和前端應用的安全性。