[設計案例] Login With SSL ?

設計案例:Login With SSL?

問題與答案 (FAQ)

Q&A 類別 A: 概念理解類

Q1: 什麼是 SSL/TLS?

  • A簡: SSL/TLS是網路傳輸加密協定,用於防竊聽與竄改,保護資料在傳輸途中的機密與完整性。
  • A詳: SSL/TLS是一種在網路上建立安全通道的加密協定,現行主要是TLS(俗稱SSL)。其透過憑證驗證伺服器身分,使用非對稱加密協商對稱金鑰,再以對稱加密保護雙方資料傳輸,並提供訊息完整性驗證。常見應用為HTTPS網頁、API、登入與付款流程,核心價值在確保傳輸過程不被竊聽或竄改。
  • 難度: 初級
  • 學習階段: 基礎
  • 關聯概念: A-Q2, A-Q3, B-Q1

Q2: 什麼是 HTTPS?它與 HTTP 有何差異?

  • A簡: HTTPS是HTTP加上TLS加密的版本,預設使用443埠,提供加密與驗證,相較HTTP更安全。
  • A詳: HTTPS是在HTTP之上疊加TLS的安全版本。瀏覽器先與伺服器完成TLS握手與憑證驗證,建立加密通道後再傳送HTTP資料。它能保護登入、付款等敏感資料免於被竊聽與竄改。HTTP則是明文傳輸,無加密與身分驗證機制。HTTPS雖有加解密開銷,但在敏感場景是必要的保護。
  • 難度: 初級
  • 學習階段: 基礎
  • 關聯概念: A-Q1, B-Q1, B-Q2

Q3: SSL 與 DRM 有何差異?

  • A簡: SSL保護傳輸過程;DRM保護內容使用與儲存。SSL防外賊,DRM防內賊與外流。
  • A詳: SSL/TLS屬於傳輸加密,僅在資料「路上」被保護,可阻擋網路竊聽與中間人攻擊;資料到達端點後即以明文形式存在。DRM/DPM則關注內容本身的權限與使用控制,防止被複製、轉存或外流,偏向端點保護與存取控制。兩者目標不同,不能互相替代,常需搭配使用。
  • 難度: 初級
  • 學習階段: 基礎
  • 關聯概念: A-Q12, A-Q18, B-Q12

Q4: 為什麼登入流程需要使用 HTTPS?

  • A簡: 登入傳輸帳號密碼等敏感資訊,需用HTTPS防竊聽與中間人攻擊,確保憑證安全。
  • A詳: 登入時會送出帳號密碼或憑證,一旦在HTTP明文傳輸,即可能被同網段或中間節點竊聽取得,造成帳號盜用風險。HTTPS可在瀏覽器與伺服器間建立加密通道,並驗證伺服器身分,避免被偽裝網站欺騙。故最佳實務是至少在登入、付款等敏感操作中使用HTTPS。
  • 難度: 初級
  • 學習階段: 基礎
  • 關聯概念: A-Q2, B-Q1, C-Q1

Q5: 整個網站是否都需要使用 HTTPS?

  • A簡: 不一定。至少保護登入與付款;若效能敏感,可僅針對敏感頁面上HTTPS。
  • A詳: 若以效能與成本為考量,傳統作法是僅在登入、付款、個資編輯等高敏感頁面使用HTTPS,其餘內容維持HTTP。這可降低CPU加解密負載與平台成本。不過風險是回到HTTP後會話Cookie可能遭竊聽,需評估威脅模型與資安要求,並以代幣橋接降低敏感資訊暴露。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: A-Q7, A-Q11, D-Q10

Q6: 為什麼整站使用 HTTPS 可能影響效能?

  • A簡: TLS握手與加解密屬CPU密集,並伴隨額外延遲,在高流量時增加資源負載。
  • A詳: TLS引入握手流程與加解密計算,尤其首次連線需進行非對稱金鑰運算,產生明顯CPU與延遲開銷。雖然有快取、會話復用與硬體加速可緩解,但在早期或資源有限環境中,整站HTTPS會影響吞吐量。故常見設計是「只在必要流程用HTTPS」以降低成本。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: B-Q1, B-Q2, D-Q1

Q7: HTTPS 只保護傳輸的含義是什麼?

  • A簡: 代表資料到達端點後不再受SSL保護,儲存與內部外流風險仍需其他機制。
  • A詳: SSL/TLS的保護界線是連線兩端之間的「通道」。資料在通道內受加密與完整性保護;一旦進入伺服器應用或被用戶端儲存,便回到明文狀態,SSL已不再生效。因此對於內賊、端點被入侵、資料庫外洩、內容轉存等風險,仍需額外機制如DRM/DLP、權限管控、加密儲存等。
  • 難度: 初級
  • 學習階段: 基礎
  • 關聯概念: A-Q3, A-Q12, B-Q12

Q8: 為何將 HTTP 與 HTTPS 當作兩個網站來設計?

  • A簡: 可清楚分離安全邏輯與一般功能,降低HTTPS負載,並簡化權責界線與部署。
  • A詳: 將HTTPS端(A站)專責接收敏感輸入與簽發代幣,HTTP端(B站)承擔大部分瀏覽與業務邏輯,可把昂貴的TLS載荷集中在少量端點,提升可擴充性。此設計也讓安全控管、監測與授權更聚焦,同時方便獨立擴充A站或B站資源以符合流量型態。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: A-Q9, B-Q4, C-Q1

Q9: 什麼是登入 TOKEN?用途為何?

  • A簡: 登入TOKEN是一次性授權代碼,代表已安全提交憑證,供B站交換登入狀態。
  • A詳: TOKEN是A站在接收並暫存登入憑證後產出的授權代碼,內含最小必要資訊與簽章、過期時間等。B站收到TOKEN後驗證其真偽與時效,再到後端取回暫存的登入資料進行驗證。TOKEN本身不包含明文密碼,避免被竊取後可直接濫用,降低風險並促成跨站傳遞。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: B-Q3, B-Q4, C-Q2

Q10: TOKEN 與 SESSION 有何差異?

  • A簡: TOKEN短生命、僅作授權橋接;SESSION維持使用者狀態,持續至登出或過期。
  • A詳: TOKEN設計為一次性或短期可用,用途是「把已受HTTPS保護的登入請求安全轉交給B站」,通常不直接代表持久登入。SESSION是伺服器端使用者狀態,含身份與權限,存活時間較長。二者分工:TOKEN用於安全交接,SESSION用於後續互動。混用易產生安全與維運問題。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: A-Q9, B-Q6, C-Q4

Q11: HTTP 與 HTTPS 的 SESSION 會相通嗎?

  • A簡: 常視為不同站點,SESSION與Cookie設定不一定相通,需設計安全的橋接流程。
  • A詳: 若HTTPS與HTTP部署在不同站點或子域,預設SESSION機制與Cookie作用域可能不同步。即便在同域也可能因Cookie屬性、Secure旗標等導致不相容。故建議採用TOKEN橋接:A站簽發TOKEN,B站驗證後建立自己的SESSION,避免直接嘗試跨協定共用同一SESSION。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: B-Q6, C-Q4, D-Q2

Q12: 使用 SSL 後還有哪些風險需要注意?

  • A簡: 端點被攻擊、內部外流、明文儲存、會話被劫持等,SSL無法單獨解決。
  • A詳: SSL無法防範端點木馬、後台帳密外流、資料庫被盜、錯誤存取控制、開發漏洞(如SQL注入、XSS)或回到HTTP後的會話劫持等問題。需搭配權限控管、最小權限、敏感資料加密儲存、輸入驗證、程式碼安全檢測、日誌監控與事件回應等整體安全治理。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: A-Q3, D-Q10, B-Q12

Q13: 為何不將認證邏輯完全放在 HTTPS 端?

  • A簡: 認證規則常耦合業務邏輯,放在B站更易維護擴充,A站只負責安全接收。
  • A詳: 在多變的商業規則下,身分驗證可能依賴各種業務資料、政策與授權檢查。若把認證完整放在A站,將造成跨站耦合與重複實作,反而不利維護。將A站定位為「安全入口+代幣簽發」,B站負責驗證與授權,能在保持安全的同時維持業務邏輯一致性與可擴充性。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: A-Q8, B-Q4, C-Q3

Q14: A/B 站之間可用哪些傳輸方式?

  • A簡: 可用HTTPS、資料庫、訊息佇列、WCF/HTTP API等,依跨機器與延展性選擇。
  • A詳: 小流量可同機以檔案或記憶體共享(不建議跨程序);中大型系統需跨伺服器,常用選項包括共享資料庫、分散式快取(Redis)、HTTP API、WCF、訊息佇列(如RabbitMQ)。考量一致性、延遲、可靠性與安全性選擇合適機制,並確保傳輸通道本身的存取控制。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: B-Q5, C-Q5, C-Q10

Q15: 為何說 HTTPS 的工作屬於 CPU bound?

  • A簡: TLS握手與對稱加解密主要耗CPU,流量增大即顯著推高處理器負載。
  • A詳: TLS採非對稱金鑰完成握手協商,該步驟計算昂貴;握手後雖採對稱加密,但大量連線仍帶來顯著CPU開銷。若整站改為HTTPS,峰值時會大幅推升CPU利用率。可藉由硬體加速、TLS快取、連線重用與僅在必要流程使用HTTPS來平衡。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: A-Q6, B-Q1, D-Q1

Q16: 信用卡授權碼類比如何說明 TOKEN?

  • A簡: 如刷卡授權碼,TOKEN只代表授權憑證,不含敏感資料,被截獲也難濫用。
  • A詳: 刷卡流程中,銀行驗證後提供授權碼給商家;授權碼本身不含卡號與密碼,僅在規範條件下可取款。同理,A站簽發的TOKEN不含明文密碼與完整身分,只是授權憑據。B站須驗證簽章與時效後,於後端安全交換真正的登入資訊,降低TOKEN被竊取後的風險。
  • 難度: 初級
  • 學習階段: 基礎
  • 關聯概念: A-Q9, B-Q3, D-Q4

Q17: 使用 TOKEN 橋接的核心價值是什麼?

  • A簡: 降低敏感資料跨站流動與暴露,並提供可控、可失效的一次性授權機制。
  • A詳: TOKEN把「敏感憑證」與「授權證明」拆分,跨站只傳遞後者,並以簽章、時效、一次性使用等機制強化安全。它讓HTTPS端專注保護輸入,B站取得授權再到後端交換資訊,達到分層防護、最小暴露與清楚的權責界線,有助於擴充與審計。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: A-Q9, B-Q3, C-Q4

Q18: 何時該考慮 DRM/DPM 而非僅用 SSL?

  • A簡: 當需求是防止內容被轉存外流、控制離線使用與存取權限時,需用DRM/DPM。
  • A詳: 若目標是避免內部人員或取得檔案者將內容複製、列印、轉寄或離線解密,SSL無法滿足,需導入DRM/DPM等端點與內容保護機制,搭配權限與稽核。SSL仍應用於傳輸保護,但核心問題在於「用後控制」,此時DRM/DPM才是正解。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: A-Q3, A-Q12, B-Q12

Q&A 類別 B: 技術原理類

Q1: HTTPS 的運作流程為何?

  • A簡: 瀏覽器驗證憑證→握手協商金鑰→建立加密通道→傳輸HTTP資料並驗證完整性。
  • A詳: 流程包括:1) 客戶端發起握手,伺服器回應憑證與參數;2) 客戶端驗證憑證信任鏈與域名;3) 以非對稱演算法協商對稱金鑰;4) 雙方改用對稱加密傳輸HTTP資料;5) 以MAC/AEAD驗證完整性。過程中可能啟用會話復用以降低後續握手開銷。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: A-Q1, A-Q2, A-Q6

Q2: TLS 如何結合對稱與非對稱加密?

  • A簡: 握手用非對稱協商安全金鑰,之後以對稱加密處理大量資料以兼顧效率與安全。
  • A詳: 非對稱加密(如RSA、ECDHE)適合金鑰交換與身分驗證,但計算昂貴;協商出會話金鑰後,實際資料傳輸改用對稱加密(如AES-GCM),效率高且支援完整性驗證。此「先非對稱、後對稱」設計平衡效能與安全,並配合隨機數與抗重放機制保障會話安全。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: B-Q1, A-Q6, D-Q1

Q3: 安全的 TOKEN 應包含哪些安全機制?

  • A簡: 應含簽章/HMAC、過期時間、隨機ID、一次性使用與最少必要資訊。
  • A詳: TOKEN至少需:1) 防竄改簽章(HMAC或非對稱簽章);2) exp/iat等時效欄位;3) 高熵隨機ID以避免猜測;4) 在儲存層標記一次性使用;5) 僅攜帶非敏感資料(不含密碼);6) 可綁定用戶端屬性(如UA/IP)以加強情境綁定。B站驗證通過後,於後端安全交換登入資訊。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: A-Q9, A-Q17, C-Q2

Q4: A→B 的 TOKEN 流程是如何設計的?

  • A簡: A站收憑證存暫存區→發TOKEN→B站驗證→從儲存層取憑證→執行登入→建立SESSION。
  • A詳: 1) 使用者在A站(HTTPS)送出帳密;2) A站將憑證存至安全儲存並產生短期TOKEN(含簽章/到期);3) 導向B站攜帶TOKEN;4) B站驗證簽章與時效,並標記一次性使用;5) B站從儲存層取出憑證,執行既有認證流程;6) 驗證成功後建立SESSION並清除暫存。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: C-Q3, C-Q4, C-Q5

Q5: A/B 跨伺服器傳輸選項與取捨?

  • A簡: 資料庫/快取可靠與易擴充;HTTP API靈活;檔案/記憶體僅限同機與小量流量。
  • A詳: 資料庫與分散式快取(如Redis)提供一致性、TTL與高可用,適合儲存短期憑證;HTTP API或WCF便於擴展為服務化介面,但需額外保護API本身;本機檔案或記憶體共享僅適用單機開發或低量,跨機困難。應依延遲、可用性、維運複雜度與安全需求選擇。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: A-Q14, C-Q5, C-Q10

Q6: Web Farm 下如何管理會話(SESSION)?

  • A簡: 使用分散式會話(DB/Redis)或避免跨機相依,登入用TOKEN橋接較穩定。
  • A詳: 多台B站需避免單機記憶體SESSION造成黏著或遺失。可用共享資料庫、Redis或專用Session State Server集中管理;或採無狀態設計以降低相依。登入階段用一次性TOKEN橋接,可避免跨機共享敏感狀態,提升可靠性與彈性擴充。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: A-Q11, C-Q6, D-Q8

Q7: TLS 終止於負載平衡器的影響是什麼?

  • A簡: LB終止TLS後內網走HTTP,減伺服器負載但內網需受信與隔離,並處理原協定標頭。
  • A詳: 在LB終止TLS可降低後端CPU壓力,並集中憑證管理。但LB→後端為HTTP,需確保內網隔離與ACL,並傳遞X-Forwarded-Proto、X-Forwarded-For等標頭供應用辨識原協定與客源。若安全要求高,可採終止於LB後再對內重加密。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: D-Q1, D-Q9, C-Q7

Q8: 如何防止 TOKEN 重放攻擊?

  • A簡: 設定短效期、一次性使用、伺服端黑名單與簽章驗證,必要時綁定情境。
  • A詳: 措施包含:1) exp極短(如30–120秒)與iat檢查;2) 伺服端儲存消耗狀態,一用即失效;3) HMAC/簽章防竄改;4) 檢查nonce或tokenId未曾使用;5) 可選擇綁定UA/IP;6) 失敗次數限制與告警。如此即使TOKEN被攔截,也難以在有效時間內成功重放。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: A-Q9, D-Q4, C-Q2

Q9: 只在登入頁使用 HTTPS 時,要注意混合內容嗎?

  • A簡: 是。HTTPS頁面不得引用HTTP資源,避免被竄改或降級攻擊導致憑證外洩。
  • A詳: 登入頁若以HTTPS提供,所有腳本、樣式、影像與XHR也必須透過HTTPS載入。混合內容會讓瀏覽器發警告,甚至封鎖,且HTTP資源可能被中間人插入惡意碼竊取憑證。應使用相對或HTTPS連結,並審核第三方資源來源,消除混合內容。
  • 難度: 初級
  • 學習階段: 基礎
  • 關聯概念: D-Q3, C-Q1, C-Q7

Q10: 安全 Cookie 屬性在此架構中的角色?

  • A簡: Secure/HttpOnly/SameSite提升Cookie安全,但回到HTTP時Secure無法使用需評估風險。
  • A詳: Secure旗標要求Cookie僅隨HTTPS傳送,HttpOnly防止JS存取,SameSite抑制跨站請求。若登入後切回HTTP,會話Cookie不能標記Secure,存在被竊聽風險。可用TOKEN橋接、縮短SESSION時效、重要操作再升級HTTPS,或改為全站HTTPS以根除此風險。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: A-Q5, D-Q10, C-Q8

Q11: 身分驗證(AuthN)與授權(AuthZ)如何分工?

  • A簡: AuthN確認「你是誰」,AuthZ決定「你能做什麼」,應分層實作與審核。
  • A詳: 在本架構中,A站協助安全收集憑證,B站執行身分驗證(AuthN)確認使用者身分,並據以套用授權(AuthZ)規則決定可存取資源。分離兩者能讓驗證與授權策略獨立演進,安全事件更易追溯與修補,且降低耦合度。
  • 難度: 初級
  • 學習階段: 基礎
  • 關聯概念: A-Q13, C-Q4, D-Q8

Q12: 外賊與內賊的威脅模型差異?

  • A簡: 外賊偏網路竊聽與中間人,SSL可防;內賊偏端點外流與濫用,需DRM與管控。
  • A詳: 外賊通常無法直接接近端點,透過監聽網路、DNS劫持、惡意Wi-Fi等竊取資料;SSL能顯著降低此類風險。內賊(或端點被入侵)則可直接存取資料、匯出檔案或濫用權限,SSL無能為力,需靠權限管理、行為監控、DLP/DRM與審計來因應。
  • 難度: 初級
  • 學習階段: 基礎
  • 關聯概念: A-Q3, A-Q18, D-Q7

Q&A 類別 C: 實作應用類

Q1: 如何規劃僅在登入流程使用 HTTPS?

  • A簡: 設A站專責HTTPS登入與代幣簽發,B站提供其餘功能,登入後以TOKEN橋接。
  • A詳: 具體步驟:1) 佈署A站(login.example.com)全HTTPS;2) B站登入按鈕導向A站,附回傳returnUrl;3) A站驗證輸入基本格式,暫存憑證與發TOKEN;4) 302導回B站攜帶TOKEN;5) B站驗證TOKEN後執行登入與建立SESSION;6) 清除暫存。注意returnUrl白名單與CSRF保護。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: A-Q8, B-Q4, D-Q9

Q2: 如何設計 TOKEN 格式與 HMAC 簽章?

  • A簡: 使用JSON含jti/iat/exp/uid等欄位,HMAC-SHA256簽章,金鑰妥善輪替與保護。
  • A詳: 建議格式:payload含jti(隨機ID)、iat/exp(發行/到期)、uid(登入識別)、scope(可選),不含密碼。簽章流程:sig = HMAC_SHA256(base64url(header)+”.”+base64url(payload), secretKey)。設短效期(30–120秒)、一次性使用並於儲存層綁jti。金鑰採KMS管理與定期輪替。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: B-Q3, D-Q4, C-Q4

Q3: A站如何接收帳密並產生 TOKEN?

  • A簡: 透過HTTPS收表單,存至暫存區,生成含時效與簽章的TOKEN,回傳B站。
  • A詳: 步驟:1) A站HTTPS表單以POST接收帳密;2) 基礎校驗後將憑證與狀態寫入暫存(Redis/DB),key=jti,TTL短;3) 建立payload含jti/iat/exp/uid候選等;4) 使用HMAC簽章產生TOKEN;5) 302導向B站?token=…。注意:限制嘗試次數、遮蔽錯誤訊息、全程HTTPS與禁止混合內容。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: B-Q4, C-Q2, D-Q5

Q4: B站如何驗證 TOKEN 並建立 SESSION?

  • A簡: 驗簽與時效→查暫存憑證→執行既有驗證→成功後建立SESSION並標記TOKEN已用。
  • A詳: 實作:1) 檢查token格式與簽章;2) 比對exp/iat與時鐘漂移;3) 查儲存層以jti取出憑證,若已用或不存在則拒絕;4) 執行原有帳密驗證與授權;5) 建立SESSION(可分散式),設定Cookie;6) 刪除或標記該jti為已使用。注意:記錄稽核日誌與失敗告警。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: A-Q10, B-Q6, D-Q4

Q5: 如何設計暫存層儲存登入資訊?

  • A簡: 使用具TTL的儲存(如Redis/DB),以jti為鍵,存放最小必要資訊並啟用一次性。
  • A詳: 方案:1) Redis:SET jti->{uid, username, hash(密碼雜湊或原輸入), meta} EX 120;2) SQL:LoginStaging(jti PK, uid, secretHash, createdAt, usedAt)。安全守則:最少資訊、不存明碼、加TTL、使用索引;佈署高可用;封裝API避免直接存取。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: B-Q5, D-Q4, C-Q4

Q6: 多台B站如何共享登入狀態?

  • A簡: 採分散式會話(Redis/DB)或無狀態方案,並確保TOKEN橋接過程具全域一致性。
  • A詳: 作法:1) 會話集中:將SESSION存Redis/SQL,所有B站共享,Cookie僅存會話ID;2) 利用反向代理啟用黏性會話(次優);3) 無狀態:改採簽章JWT作授權(需評估撤銷難題)。無論何者,登入時TOKEN核銷需全域一致,避免多次成功或穿透失敗。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: B-Q6, D-Q8, C-Q4

Q7: 如何設定僅強制 /login 使用 HTTPS?

  • A簡: 以反向代理或伺服器規則將/login導向HTTPS,其餘路徑維持HTTP或依規則升級。
  • A詳: 作法:1) 在IIS用URL Rewrite:匹配^login$或^account/(login reset)$時,若非HTTPS則301至https;2) Nginx用return 301 https://$host$request_uri條件判斷;3) 保持登入與資源在同源HTTPS,移除混合內容;4) 白名單回傳位址避免開放跳轉。
  • 難度: 初級
  • 學習階段: 基礎
  • 關聯概念: B-Q7, D-Q3, D-Q9

Q8: 如何安全地從 HTTPS 切回 HTTP?

  • A簡: 完成驗證後以302導回HTTP頁,刪除暫存資料,避免Referer洩漏與攜帶敏感參數。
  • A詳: 流程:1) B站驗證成功後建立SESSION;2) 302回到HTTP的returnUrl;3) 不在URL攜帶TOKEN或敏感資訊;4) 設定Referrer-Policy為no-referrer或same-origin;5) 清除暫存憑證;6) 重要操作再升級到HTTPS。提醒:HTTP會話可被竊聽,需評估風險。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: A-Q10, B-Q10, D-Q10

Q9: 如何壓測並評估 HTTPS 效能成本?

  • A簡: 以壓測工具量測QPS與延遲,區分冷/熱握手,啟用復用與調整金鑰與快取策略。
  • A詳: 步驟:1) 使用wrk/ab/jmeter模擬登入端點流量;2) 測冷啟動(首次握手)與會話復用差異;3) 監控CPU、延遲、握手失敗率;4) 啟用Keep-Alive、TLS session resumption、OCSP stapling;5) 調整密套件與金鑰長度;6) 估算A站擴容與TLS終端設備需求。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: A-Q6, B-Q1, D-Q1

Q10: 如何以HTTP API在.NET跨站傳遞 TOKEN?

  • A簡: 以REST API接受TOKEN與換取憑證,採HMAC驗證與IP白名單,HTTPS保護通道。
  • A詳: 設計:1) A站提供/issue,B站提供/consume;2) A站簽發TOKEN並存儲jti;3) B站呼叫/consume附TOKEN,伺服端驗簽與時效,回傳憑證片段;4) API加上IP白名單、速率限制與記錄;5) 全程HTTPS。若內網安全,可在LB終止TLS但需強ACL。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: B-Q5, B-Q7, C-Q4

Q&A 類別 D: 問題解決類

Q1: 整站切到 HTTPS 後效能暴跌怎麼辦?

  • A簡: 啟用TLS復用與HTTP/2、終止於LB、關鍵頁面HTTPS化、擴容CPU與快取,分離A/B站。
  • A詳: 症狀:QPS下降、CPU飆高、延遲升。原因:TLS握手與加解密耗用CPU、無復用、憑證鏈過長。解法:啟用session resumption、HTTP/2、OCSP stapling;將TLS終止於LB並快取靜態資源;僅敏感頁HTTPS;分離A站;垂直/水平擴容。預防:容量規劃與壓測。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: A-Q6, B-Q1, C-Q9

Q2: 登入後回到 HTTP 仍顯示未登入狀態?

  • A簡: 可能因SESSION不共享或Cookie域錯,應用TOKEN橋接並統一會話儲存與Cookie設定。
  • A詳: 症狀:登入成功頁跳回後仍匿名。原因:A/B站不同域、Cookie屬性不符、Load Balancer導致會話丟失。解法:使用TOKEN在B站建立自身SESSION;統一Cookie Domain/Path;採共享SESSION(Redis/DB);檢查時鐘/過期。預防:統一配置與端到端測試。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: A-Q11, B-Q6, C-Q4

Q3: 瀏覽器出現混合內容警告如何處理?

  • A簡: 確保HTTPS頁面所有資源均用HTTPS載入,移除或替換HTTP連結與第三方資源。
  • A詳: 症狀:登入頁鎖頭消失或警告。原因:HTTPS頁面引用HTTP腳本/圖檔/樣式。解法:全改用HTTPS或相對URL;檢查CDN與第三方資源是否支援HTTPS;使用CSP升級不安全請求。預防:資產掃描、CI檢查與模板治理,避免新混合內容產生。
  • 難度: 初級
  • 學習階段: 基礎
  • 關聯概念: B-Q9, C-Q7, C-Q1

Q4: TOKEN 被重放造成風險時如何處置?

  • A簡: 啟用短效與一次性,伺服端核銷jti並監控異常,必要時加入情境綁定。
  • A詳: 症狀:相同TOKEN多次被使用。原因:缺少時效、一致性或核銷。解法:縮短exp、核銷jti、簽章驗證;使用原子操作避免競態;綁定UA/IP;告警與封鎖來源。預防:方案設計初期納入一次性與黑名單機制,定期演練。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: B-Q3, B-Q8, C-Q2

Q5: 使用者偶爾登入失敗顯示 TOKEN 過期?

  • A簡: 可能時鐘漂移或網路延遲,延長容忍窗、同步時鐘並調整TTL與重試策略。
  • A詳: 症狀:間歇性過期錯誤。原因:伺服器/客戶端時鐘不一致、網路延遲或排程壓力。解法:啟用NTP同步;為iat/exp加入leeway(如±30秒);延長短TTL至合理值(60–120秒);提供一次重試。預防:監控延遲、容量規劃與壓測。
  • 難度: 初級
  • 學習階段: 基礎
  • 關聯概念: C-Q2, C-Q3, C-Q4

Q6: HTTPS 頁面載入很慢如何最佳化?

  • A簡: 啟用HTTP/2與session resumption、OCSP stapling、壓縮與快取,精簡TLS配置。
  • A詳: 症狀:首屏慢、TTFB高。原因:握手多往返、憑證檢查、資源過多。解法:TLS1.2/1.3、Session Tickets、OCSP stapling;開啟Keep-Alive;壓縮與合併資源;使用CDN與就近路由。預防:持續效能監控與定期憑證優化。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: C-Q9, B-Q1, D-Q1

Q7: 憑證錯誤導致連線被阻擋怎麼辦?

  • A簡: 檢查域名、到期與信任鏈,正確安裝中繼憑證並及時更新,測試HSTS影響。
  • A詳: 症狀:瀏覽器紅頁或警告。原因:過期、域名不匹配、自簽或缺中繼。解法:更新憑證、確保SAN包含域名、安裝完整鏈、使用受信CA;檢查時間與HSTS設定。預防:自動化續簽與監控到期,藍綠部署避免中斷。
  • 難度: 初級
  • 學習階段: 基礎
  • 關聯概念: B-Q1, C-Q7, D-Q9

Q8: Web Farm 環境中隨機掉登入狀態?

  • A簡: 可能SESSION未共享或未黏著,改用分散式會話或無狀態設計,登入用TOKEN橋接。
  • A詳: 症狀:刷新後偶爾被登出。原因:SESSION存在單機、LB輪詢導致會話丟失。解法:使用Redis/DB集中會話、設定黏性;或改為無狀態JWT(需處理撤銷)。登入仍透過TOKEN橋接,避免跨機鎖定。預防:壓測與健康檢查配置。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: B-Q6, C-Q6, C-Q4

Q9: 登入跳轉出現無限重導如何排查?

  • A簡: 檢查returnUrl白名單、協定判斷与X-Forwarded-Proto,避免HTTP/HTTPS判斷錯誤。
  • A詳: 症狀:登入後不停往返。原因:LB終止TLS導致應用誤判協定、回傳URL錯或開放跳轉。解法:正確讀取X-Forwarded-Proto、設定信任代理;returnUrl限制同站域與合法路徑;避免在已登入頁再次強制跳登入。預防:整合測試涵蓋代理情境。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: B-Q7, C-Q1, C-Q7

Q10: Secure 屬性 Cookie 在 HTTP 下不帶出的問題?

  • A簡: SecureCookie不會隨HTTP傳送,若回到HTTP需拆分Cookie或改為全站HTTPS。
  • A詳: 症狀:登入後在HTTP頁面無會話。原因:Cookie設Secure旗標僅限HTTPS傳輸。解法:將登入後的會話Cookie不設Secure(有風險),或僅在敏感操作升級HTTPS,最佳解是全站HTTPS。預防:設計階段評估風險,避免在HTTP承載敏感會話。
  • 難度: 中級
  • 學習階段: 核心
  • 關聯概念: B-Q10, A-Q5, C-Q8

學習路徑索引

  • 初學者:建議先學習哪 15 題
    • A-Q1: 什麼是 SSL/TLS?
    • A-Q2: 什麼是 HTTPS?它與 HTTP 有何差異?
    • A-Q4: 為什麼登入流程需要使用 HTTPS?
    • A-Q3: SSL 與 DRM 有何差異?
    • A-Q7: HTTPS 只保護傳輸的含義是什麼?
    • A-Q12: 使用 SSL 後還有哪些風險需要注意?
    • B-Q1: HTTPS 的運作流程為何?
    • B-Q2: TLS 如何結合對稱與非對稱加密?
    • B-Q9: 只在登入頁使用 HTTPS 時,要注意混合內容嗎?
    • A-Q5: 整個網站是否都需要使用 HTTPS?
    • A-Q6: 為什麼整站使用 HTTPS 可能影響效能?
    • A-Q16: 信用卡授權碼類比如何說明 TOKEN?
    • A-Q9: 什麼是登入 TOKEN?用途為何?
    • D-Q3: 瀏覽器出現混合內容警告如何處理?
    • D-Q7: 憑證錯誤導致連線被阻擋怎麼辦?
  • 中級者:建議學習哪 20 題
    • A-Q8: 為何將 HTTP 與 HTTPS 當作兩個網站來設計?
    • A-Q10: TOKEN 與 SESSION 有何差異?
    • A-Q11: HTTP 與 HTTPS 的 SESSION 會相通嗎?
    • A-Q13: 為何不將認證邏輯完全放在 HTTPS 端?
    • A-Q14: A/B 站之間可用哪些傳輸方式?
    • A-Q15: 為何說 HTTPS 的工作屬於 CPU bound?
    • A-Q17: 使用 TOKEN 橋接的核心價值是什麼?
    • B-Q3: 安全的 TOKEN 應包含哪些安全機制?
    • B-Q4: A→B 的 TOKEN 流程是如何設計的?
    • B-Q5: A/B 跨伺服器傳輸選項與取捨?
    • B-Q6: Web Farm 下如何管理會話(SESSION)?
    • B-Q7: TLS 終止於負載平衡器的影響是什麼?
    • B-Q8: 如何防止 TOKEN 重放攻擊?
    • B-Q10: 安全 Cookie 屬性在此架構中的角色?
    • C-Q1: 如何規劃僅在登入流程使用 HTTPS?
    • C-Q2: 如何設計 TOKEN 格式與 HMAC 簽章?
    • C-Q3: A站如何接收帳密並產生 TOKEN?
    • C-Q4: B站如何驗證 TOKEN 並建立 SESSION?
    • C-Q5: 如何設計暫存層儲存登入資訊?
    • C-Q7: 如何設定僅強制 /login 使用 HTTPS?
  • 高級者:建議關注哪 15 題
    • C-Q6: 多台B站如何共享登入狀態?
    • C-Q8: 如何安全地從 HTTPS 切回 HTTP?
    • C-Q9: 如何壓測並評估 HTTPS 效能成本?
    • C-Q10: 如何以HTTP API在.NET跨站傳遞 TOKEN?
    • D-Q1: 整站切到 HTTPS 後效能暴跌怎麼辦?
    • D-Q2: 登入後回到 HTTP 仍顯示未登入狀態?
    • D-Q4: TOKEN 被重放造成風險時如何處置?
    • D-Q5: 使用者偶爾登入失敗顯示 TOKEN 過期?
    • D-Q6: HTTPS 頁面載入很慢如何最佳化?
    • D-Q8: Web Farm 環境中隨機掉登入狀態?
    • D-Q9: 登入跳轉出現無限重導如何排查?
    • D-Q10: Secure 屬性 Cookie 在 HTTP 下不帶出的問題?
    • A-Q18: 何時該考慮 DRM/DPM 而非僅用 SSL?
    • B-Q12: 外賊與內賊的威脅模型差異?
    • A-Q14: A/B 站之間可用哪些傳輸方式?





Facebook Pages

AI Synthesis Contents

Edit Post (Pull Request)

Post Directory