Web安全之 XSS 攻擊與防御(附 github 示例)

(本文演示 github:https://github.com/zphhhhh/node-secure

什么是 XSS 攻擊?

XSS 全稱 Cross-Site Scripting,可譯為:跨站腳本攻擊,由于 CSS 已被占用,因此簡稱 XSS。

一句話理解 XSS:不可信內(nèi)容經(jīng)處理后被當(dāng)做可信內(nèi)容再渲染。

XSS 攻擊的種類

XSS 攻擊可細(xì)分為 反射型 XSS、持久型 XSS、DOM XSS,前兩種針對服務(wù)器,后一種針對客戶端。

XSS 攻擊的種類.png

反射型 XSS

不可信內(nèi)容提交到服務(wù)器,立即在響應(yīng)中被返回。

比如:有一個登陸頁面需要輸入用戶名,提交后會顯示 “你好,XXX”,這里的 XXX 即有可能存在反射型 XSS 攻擊漏洞。

反射型 XSS.png

持久型 XSS

不可信內(nèi)容提交到服務(wù)器,被保存到服務(wù)器數(shù)據(jù)庫,下次需要時被當(dāng)做可信內(nèi)容被返回。

比如:惡意代碼寫入個人資料頁,所有訪問我的資料的朋友都會遭到攻擊

持久型 XSS.png

DOM XSS

不可信內(nèi)容被插入到頁面DOM節(jié)點。

比如:網(wǎng)絡(luò)劫持(使用數(shù)據(jù)流量訪問網(wǎng)頁時出現(xiàn)的網(wǎng)絡(luò)服務(wù)商鏈接)

DOM XSS.png
百度首頁被運營商植入 DOM XSS.png

XSS 攻擊的常見攻擊效果

  • 獲取用戶的 cookie,實現(xiàn)會話劫持
    • 盜取網(wǎng)銀資產(chǎn)
  • 在頁面?zhèn)卧毂韱危@取用戶的賬號密碼
  • XSS Worm(終極手段)
  • 等等

防御 XSS

為防御 XSS,我們首先要知道 XSS 攻擊的本質(zhì)是不安全的
HTML 注入,可通過在 HTML、CSS、JS 或 HTTP 協(xié)議層次上進(jìn)行防范。下面提供一些常用的防御策略:

  • 輸入檢查
    • 用戶名、郵箱等表單驗證(前臺/服務(wù)器二次驗證)
    • 富文本使用白名單機制等
  • 輸出檢查
    • HTML-Encoder
    • js-Encoder
  • HTTP 頭部:HttpOnly(四兩撥千千)
    • 設(shè)置 cookie 時加入 HttpOnly 可使 js 腳本無法獲取 cookie
  • HTTP 頭部:CSP(Content Security Policy)
    • 定義允許的資源加載地址,比如圖片 / 視頻 / JS 腳本等
  • HTTPS加密訪問
    • 有效防止 DOM XSS 攻擊

參考:
《白帽子講 Web 安全》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容