什麼是會話劫持?它如何發生?

了解會話劫持是什麼、攻擊如何運作,以及可落地的防範策略。本文整理真實案例、預防方法與關鍵安全實務,協助你保護使用者會話。

會話劫持:類型、真實案例與防範方法

會話劫持(Session Hijacking)是一種網路攻擊,惡意攻擊者會透過竊取使用者的 Session ID 或會話權杖,接管已授權的網頁會話。一旦取得這個暫時性的「通行憑證」,攻擊者就能繞過登入畫面,甚至繞過多因素驗證(MFA),冒充使用者存取敏感資料或執行未授權交易。

這類攻擊常透過公共 Wi-Fi 封包嗅探、跨站腳本(XSS)或會話固定(Session Fixation)等方式發生。若要防止劫持,開發者必須實作安全會話管理(例如 HttpOnly Cookie 與 Session ID 重生),使用者也應優先使用 HTTPS 並避免不安全網路。

什麼是會話劫持?它如何運作?

會話劫持是指攻擊者在使用者已完成驗證後,接管其有效會話。當使用者登入網站或應用後,系統通常會簽發一個會話權杖,讓使用者在後續請求中無須反覆輸入帳號密碼。這個權杖就像「數位鑰匙」。

若駭客成功竊取這把鑰匙,就能假冒合法使用者,未授權存取敏感資料、個資,甚至內部系統。雖然手法各異,但核心原理一致:攔截或竊取會話權杖,並在權杖有效期內重放使用。由於攻擊發生在登入之後,往往更不易察覺,對企業與使用者都具有高度風險。

理解會話劫持的運作方式,是建立防護的第一步。下一節將拆解常見攻擊類型與其差異。

會話劫持的常見類型:理解攻擊手法

會話劫持可透過不同方式發生,且每一種手法都對應不同系統弱點。以下是最常見的類型:

  1. 封包嗅探(Packet Sniffing)
    這是最基礎的會話劫持方式之一。攻擊者利用網路監聽工具擷取使用者與伺服器間的未加密流量。若會話權杖透過 HTTP 傳輸(而非 HTTPS),就很容易被攔截。公共 Wi-Fi 尤其危險,因為攻擊者可更輕易嗅探未保護封包。
  2. 中間人攻擊(Man-in-the-Middle, MITM)
    MITM 指攻擊者在兩端通訊之間祕密攔截、甚至竄改資料,常見於使用者瀏覽器與伺服器之間。攻擊者可在傳輸途中取得會話權杖,進而接管會話。當網站未正確使用加密、或使用者連線到不安全網路時,MITM 攻擊成功率會提高。
  3. 跨站腳本(Cross-Site Scripting, XSS)
    XSS 允許攻擊者把惡意腳本注入可信網站。當腳本在使用者瀏覽器執行時,可竊取 Session Cookie 或權杖並回傳給攻擊者。XSS 常與社交工程並用,例如誘導使用者點擊惡意連結。
  4. Cookie 竊取(Cookie Theft)
    許多應用把會話資訊放在 Cookie。若 Cookie 未正確設定(如缺少 HttpOnlySecure),攻擊者可透過 XSS 或其他漏洞竊取 Cookie,並直接冒用使用者會話。
  5. 會話固定(Session Fixation)
    與前述手法不同,會話固定通常發生在登入前:攻擊者先替受害者設定 Session ID,再誘使受害者使用該 ID 登入;登入成功後,攻擊者即可用同一個固定 ID 接管會話。雖較不常見,但若系統未在登入後重生 Session ID,風險仍高。

這些攻擊都在提醒同一件事:必須透過強加密、頻繁權杖輪換與正確應用安全實務,才能有效保護使用者會話。

如何防止會話劫持:保護使用者會話的關鍵策略

預防會話劫持需要多層次防護,涵蓋使用者行為與系統層安全。採用以下最佳實務,可顯著降低被劫持風險。

1. 強制 HTTPS 加密

確保 client 與 server 的所有傳輸都使用 HTTPS,是防止會話劫持最關鍵的防線之一。加密流量可大幅降低封包嗅探與 MITM 攻擊成功率。建議同時啟用 HSTS(HTTP Strict Transport Security),強制瀏覽器僅以 HTTPS 連線。

會話權杖常存放於 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 洩漏風險。

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 如何協助你防止會話劫持與其他威脅