會話劫持(Session Hijacking)是一種網路攻擊,惡意攻擊者會透過竊取使用者的 Session ID 或會話權杖,接管已授權的網頁會話。一旦取得這個暫時性的「通行憑證」,攻擊者就能繞過登入畫面,甚至繞過多因素驗證(MFA),冒充使用者存取敏感資料或執行未授權交易。
這類攻擊常透過公共 Wi-Fi 封包嗅探、跨站腳本(XSS)或會話固定(Session Fixation)等方式發生。若要防止劫持,開發者必須實作安全會話管理(例如 HttpOnly Cookie 與 Session ID 重生),使用者也應優先使用 HTTPS 並避免不安全網路。
什麼是會話劫持?它如何運作?
會話劫持是指攻擊者在使用者已完成驗證後,接管其有效會話。當使用者登入網站或應用後,系統通常會簽發一個會話權杖,讓使用者在後續請求中無須反覆輸入帳號密碼。這個權杖就像「數位鑰匙」。
若駭客成功竊取這把鑰匙,就能假冒合法使用者,未授權存取敏感資料、個資,甚至內部系統。雖然手法各異,但核心原理一致:攔截或竊取會話權杖,並在權杖有效期內重放使用。由於攻擊發生在登入之後,往往更不易察覺,對企業與使用者都具有高度風險。
理解會話劫持的運作方式,是建立防護的第一步。下一節將拆解常見攻擊類型與其差異。
會話劫持的常見類型:理解攻擊手法
會話劫持可透過不同方式發生,且每一種手法都對應不同系統弱點。以下是最常見的類型:
- 封包嗅探(Packet Sniffing)
這是最基礎的會話劫持方式之一。攻擊者利用網路監聽工具擷取使用者與伺服器間的未加密流量。若會話權杖透過 HTTP 傳輸(而非 HTTPS),就很容易被攔截。公共 Wi-Fi 尤其危險,因為攻擊者可更輕易嗅探未保護封包。 - 中間人攻擊(Man-in-the-Middle, MITM)
MITM 指攻擊者在兩端通訊之間祕密攔截、甚至竄改資料,常見於使用者瀏覽器與伺服器之間。攻擊者可在傳輸途中取得會話權杖,進而接管會話。當網站未正確使用加密、或使用者連線到不安全網路時,MITM 攻擊成功率會提高。 - 跨站腳本(Cross-Site Scripting, XSS)
XSS 允許攻擊者把惡意腳本注入可信網站。當腳本在使用者瀏覽器執行時,可竊取 Session Cookie 或權杖並回傳給攻擊者。XSS 常與社交工程並用,例如誘導使用者點擊惡意連結。 - Cookie 竊取(Cookie Theft)
許多應用把會話資訊放在 Cookie。若 Cookie 未正確設定(如缺少HttpOnly、Secure),攻擊者可透過 XSS 或其他漏洞竊取 Cookie,並直接冒用使用者會話。 - 會話固定(Session Fixation)
與前述手法不同,會話固定通常發生在登入前:攻擊者先替受害者設定 Session ID,再誘使受害者使用該 ID 登入;登入成功後,攻擊者即可用同一個固定 ID 接管會話。雖較不常見,但若系統未在登入後重生 Session ID,風險仍高。
這些攻擊都在提醒同一件事:必須透過強加密、頻繁權杖輪換與正確應用安全實務,才能有效保護使用者會話。
如何防止會話劫持:保護使用者會話的關鍵策略
預防會話劫持需要多層次防護,涵蓋使用者行為與系統層安全。採用以下最佳實務,可顯著降低被劫持風險。
1. 強制 HTTPS 加密
確保 client 與 server 的所有傳輸都使用 HTTPS,是防止會話劫持最關鍵的防線之一。加密流量可大幅降低封包嗅探與 MITM 攻擊成功率。建議同時啟用 HSTS(HTTP Strict Transport Security),強制瀏覽器僅以 HTTPS 連線。
2. 使用安全 Cookie 設定
會話權杖常存放於 Cookie,因此 Cookie 安全設定至關重要:
- HttpOnly:阻止前端腳本讀取 Cookie,降低 XSS 型 Cookie 竊取風險。
- Secure:確保 Cookie 只會透過 HTTPS 傳輸。
- SameSite:限制跨站請求攜帶 Cookie,降低 CSRF 風險。
3. 登入後重生 Session ID
為防止會話固定,使用者成功登入後應立即重生 Session ID。這可避免攻擊者預先植入的 ID 持續有效,降低登入後被接管機率。
4. 設定會話到期與閒置逾時
限制會話有效期間,並在閒置一段時間後自動登出,可縮短攻擊者可利用的時間窗口。可進一步採用滾動式會話(rolling sessions),定期刷新會話權杖。
5. 監控異常行為
導入異常偵測機制,識別短時間跨地點登入、跨裝置異常切換等可疑行為。偵測到高風險活動時,可立即通知使用者或強制重新驗證。
6. 啟用多因素驗證(MFA)
MFA 可增加額外驗證層。即使攻擊者拿到會話權杖,仍可能需要突破第二驗證因素,顯著提高攻擊成本。
7. 限縮會話使用範圍
可將會話權杖綁定到特定 IP 或 User-Agent。當同一權杖出現在異常環境時,系統可立即失效該會話,阻止未授權使用。
8. 實作內容安全政策(CSP)
CSP 可限制頁面可載入的資源來源,降低惡意腳本執行機會,進而減少透過 XSS 竊取會話權杖的風險。
9. 使用 WAF 與 IDS
部署 Web Application Firewall(WAF)可攔截可疑流量;搭配 Intrusion Detection System(IDS)可在即時偵測可疑活動時告警,縮短應變時間。
10. 教育使用者安全行為
使用者行為也會影響風險。應教育使用者避免在公共 Wi-Fi 處理敏感操作、必要時使用 VPN,並避免點擊可疑連結。
透過這些措施,你可以有效降低會話劫持風險。安全 Cookie、HTTPS 與 Session ID 重生是最基本且最重要的安全底座。接下來看看真實案例,理解其實際衝擊。
真實案例:會話劫持帶來的關鍵教訓
會話劫持不是理論威脅,而是曾在多起重大資安事件中被實際利用。以下案例說明其破壞力。
1. Firesheep 瀏覽器外掛(2010)
最知名案例之一是 Firesheep。這個外掛讓攻擊者在公共 Wi-Fi 上幾乎零門檻地擷取熱門網站(如 Facebook、Twitter)的會話 Cookie(當時仍大量使用不安全 HTTP)。
發生了什麼?
Firesheep 揭露了一個當時普遍存在的問題:許多網站尚未全面採用 HTTPS。攻擊者即使技術能力有限,也能快速攔截並劫持會話。
關鍵教訓:
Firesheep 推動產業加速全面 HTTPS 化;今天 HTTPS 已成為防範會話劫持的基本要求。
2. Google Gmail 會話劫持風險(2010)
研究人員曾指出 Gmail 在會話處理上的漏洞:部分資源請求仍可能透過 HTTP 載入,導致 Cookie 暴露風險。
發生了什麼?
即使主站使用 HTTPS,只要部分請求走 HTTP,攻擊者仍可能攔截請求並提取會話 Cookie,進而存取使用者信箱。
關鍵教訓:
促使服務提供者導入 Always-on HTTPS,確保所有流量(含圖片、腳本)都加密,降低會話 Cookie 洩漏風險。
3. Yahoo Mail Cookie 竊取(2013-2014)
Yahoo 大規模事件中,攻擊者利用會話管理弱點與 Cookie 偽造,繞過密碼驗證。
攻擊者利用 Yahoo 的會話管理系統漏洞,偽造會話 Cookie 並冒充合法使用者登入信箱。
發生了什麼?
攻擊者利用了會話權杖未妥善輪換/重生的缺陷。一旦取得有效 Cookie,便可重複使用。該事件最終估計影響 30 億個 Yahoo 帳號。
關鍵教訓:
權杖輪換與到期失效策略不可缺。透過登入後重生與舊權杖失效,可降低被重放利用的機率。
4. 加密貨幣交易所 MITM 攻擊
攻擊者曾透過 MITM 劫持加密貨幣交易平台會話。攔截會話權杖後,可冒充使用者並轉移資產。
發生了什麼?
受害者常在不安全 Wi-Fi 上操作交易,攻擊者藉此攔截登入會話。由於許多帳戶未啟用 MFA,攻擊者更容易執行未授權交易。
關鍵教訓:
金融場景必須部署 MFA 與安全連線(例如 VPN);高價值資產環境更需強化會話安全。
5. Facebook Access Token 外洩(2018)
Facebook 在 2018 年揭露漏洞,攻擊者可竊取類似會話權杖的 access token,影響近 5,000 萬個帳號。
發生了什麼?
「View As」功能缺陷導致會話權杖暴露,攻擊者可提取權杖並冒充使用者。
關鍵教訓:
Facebook 透過強制受影響使用者登出並重新驗證權杖應對。此事件凸顯了權杖生命週期管理與異常監控的重要性。
這些案例共同指出:會話權杖若未被妥善保護(例如透過 HTTP 暴露、未輪換、加密不足),任何平台都可能遭受重大衝擊。
FAQ:會話劫持常見問題
以下整理最常見問題,幫助你更快掌握會話劫持重點。
1. 會話劫持和 Spoofing(偽裝)是一樣的嗎?
不一樣,兩者相關但不同:
- 會話劫持:攻擊者竊取或攔截有效會話權杖,接管已登入會話並冒充使用者。
- Spoofing(偽裝):泛指假冒可信主體(使用者、網站、裝置等)以欺騙系統或人員。
兩者都涉及「冒充」,但會話劫持的重點是接管「已啟用」會話。
2. 會話權杖通常如何被竊取?
常見方式包含:
- 封包嗅探:在公共 Wi-Fi 攔截未加密流量以取得會話 Cookie。
- XSS:注入惡意腳本,從瀏覽器中竊取 Cookie 或權杖。
- MITM:攔截使用者與伺服器之間傳輸,擷取權杖。
- 惡意軟體/Keylogger:在端點側竊取 Cookie 或登入資料。
- 會話固定:迫使使用者用攻擊者指定的 Session ID 登入。
最佳防線: 落實 HTTPS、安全 Cookie(HttpOnly、Secure、SameSite)與登入後權杖重生。
3. 會話固定(Session Fixation)與會話劫持差在哪?
兩者都試圖接管使用者會話,但攻擊時機與手法不同:
| 比較面向 | 會話劫持(Session Hijacking) | 會話固定(Session Fixation) |
|---|---|---|
| 運作方式 | 攻擊者在使用者登入後竊取其有效會話權杖。 | 攻擊者在使用者登入前先植入固定 Session ID。 |
| 攻擊時機 | 登入後。 | 登入前到登入瞬間。 |
| 核心防禦 | HTTPS、Cookie 安全旗標、異常偵測、權杖輪換。 | 成功登入後強制重生 Session ID。 |
關鍵結論:
會話劫持發生在登入後,會話固定發生在登入前。若要防止會話固定,應用必須在成功登入後一律簽發新的會話權杖。
使用 Authgear 保護使用者免受會話劫持
會話劫持只是現代應用面臨的眾多威脅之一。若要完整保護使用者,你需要系統化的身分與存取管理(IAM)能力。Authgear 提供企業級安全功能(如會話管理、MFA、SAML),協助你建立更穩健的驗證防線。
想深入了解如何保護使用者會話並強化驗證系統?可先閱讀以下資源:
- 🔐 什麼是會話管理:威脅與最佳實務 — 掌握安全會話管理原則,降低被劫持風險。
- ⚠️ 失效驗證是什麼?如何預防? — 了解攻擊者常利用的驗證弱點。
- 🚪 如何防禦失效存取控制漏洞:完整指南 — 預防未授權存取與敏感資源暴露。
想進一步強化你的驗證安全?了解 Authgear 如何協助你防止會話劫持與其他威脅。