跳至主要內容
×

HSTS 如何保護網站及子網域?

HSTS 的保護方式,是讓適用政策的瀏覽器直接使用 HTTPS,避免先以未加密的 HTTP 發出請求,再等待網站轉址。子網域是否一併受到約束,則取決於政策是否加入 includeSubDomains 指令,不能只因主網域啟用 HSTS,就認為所有子網域都已涵蓋。HSTS Preload 則讓瀏覽器依預載清單改用 HTTPS,但網站及子網域必須符合相關要求。

瀏覽器先改用 HTTPS,而非等伺服器轉址

依 Semrush 2014 年文章的機制說明,伺服器透過名為 Strict-Transport-Security 的 HTTP 回應標頭,向瀏覽器傳達必須使用安全連線的政策;其中的 max-age 指定瀏覽器應維持「僅使用安全連線」的期間。

例如使用者輸入 HTTP 網址,或點開仍使用 HTTP 的舊連結,當瀏覽器適用該網站的 HSTS 政策時,會在送出請求前改成 HTTPS。這與先連到 HTTP 網站、收到轉址後才改走 HTTPS 不同:前者省去了 HTTP 轉址,也減少未加密請求遭竊聽或竄改的機會。關鍵前提是政策已適用,不能把效果無條件套用到每次造訪。

子網域需要明確納入政策

同一篇文章指出,加入 includeSubDomains 指令,會要求瀏覽器對子網域也使用 HTTPS。例如 yourwebsite.com 的政策包含此指令時,urblog.yourwebsite.com 也在其約束範圍內。

  • 主網域的 HSTS 設定,與是否將政策延伸到子網域,是兩個需要分別確認的項目。
  • 準備啟用前,應確認網頁伺服器支援 HSTS,並檢查相關 HTTPS 與憑證設定。
  • 不能只確認主站能安全連線,就略過準備納入政策的子網域。

預載清單提供另一種政策適用方式

Semrush 2020 年文章介紹的 HSTS Preload,是讓瀏覽器依預載清單辨識應使用 HTTPS 的網站。即使使用者嘗試以 HTTP 開啟,瀏覽器也會改用 HTTPS;因此,指向 HTTP 的舊外部連結也可省去一次轉址。

但「設定 HSTS」與「加入預載清單」不能混為一談。該文明確表示預載有多項要求,效益以網站及子網域符合要求為前提。提供材料未列出完整條件,因此這裡只能說明運作概念,不能將 2020 年文章當作現行申請規則或完整部署清單。

HSTS 如何保護網站及子網域的網路各方意見

為什麼保護網域層級 Cookie 時要留意子網域?

Semrush 2014 年文章指出,若主網域的 HSTS 政策沒有加入 includeSubDomains,即使 Cookie 設有安全旗標,網域層級 Cookie 仍可能無法受到有效保護。加入該指令後,適用政策的瀏覽器會要求子網域也使用 HTTPS,有助於保護這類 Cookie;但不宜將它理解成對所有 Cookie 風險的完整保證。

參考資料

  1. Is 100/100 PageSpeed score enough? The answer is No.www.semrush.com · 2020-07-30T13:00:00Z — 本文論述的參考來源。
  2. HTTP to HTTPS: 7 Best Practices for Top Rankingwww.semrush.com · 2014-12-03T15:00:33Z — 討論:為什麼保護網域層級 Cookie 時要留意子網域?
把問題繼續聊下去

一起討論 0 則留言

你遇到什麼狀況?留下問題或實作經驗,一起找到下一步。

目前還沒有留言,歡迎開始第一個討論。

留下你的想法

← 繼續找答案
聊聊你的需求

從你的品牌開始聊。

告訴我你的網站,以及你希望達成的目標。

用 LINE 聊聊 tony@procrustes.info