BBC 如何推出 HSTS 來強化安全性與效能。

BBC 即將推出 HSTS 來提高網站的安全性和效能。快來瞭解這項機制的意義,以及 HSTS 如何助您一臂之力。

近幾年來,HTTPS 的採用率穩步增長。根據 HTTP 封存於 2021 年的 Web Almanac,約有 91% 的電腦版和行動版要求都透過 HTTPS 提供。HTTPS 不只是保持不變,使用 Service Worker 等功能和新式通訊協定 (例如 HTTP/2HTTP/3) 的必要條件。

最近 Neil Craig 是 BBC 的首席技術架構師,並提到 bbc.comHTTP 嚴格傳輸安全性 (HSTS) 正逐步推出。接下來,我們來看看 BBC 會受到什麼影響,以及這對您的影響。

問題所在

網路伺服器通常會監聽通訊埠 80 和 443 的要求。通訊埠 80 適用於不安全的 HTTP 要求,443 則是安全 HTTPS 要求。如果在網址列中輸入網址時未加上 https:// 通訊協定前置字串 (大多數使用者通常是如此),有些瀏覽器會基於傳統因素將流量導向網站的不安全 HTTP 版本 (但有不見得總是如此),因此可能造成問題。

要確保使用者不會存取不安全的網站版本,常見的方法就是對所有要求放入 HTTP 至 HTTPS 的重新導向。這種做法雖然沒有問題,但會啟動下列事件鏈:

  1. 伺服器透過 HTTP 接收要求。
  2. 伺服器會發出重新導向,導向要求資源的 HTTPS 對等項目。
  3. 透過 HTTPS 的伺服器必須與瀏覽器交涉安全連線。
  4. 正常載入內容。

雖然重新導向功能可以正常運作,但系統可能設定錯誤,導致使用者能存取不安全的網站。即使所有設定都「已正確」設定,但使用者在重新導向階段仍會透過不安全的 HTTP 連線,因此仍會發生安全性問題,導致使用者面臨危險的中間人攻擊

輸入 HTTP 嚴格傳輸安全性

瀏覽器支援

  • 4
  • 12
  • 4
  • 7

資料來源

HSTS 取決於 HTTPS 要求的 Strict-Transport-Security HTTP 回應標頭。設定完成後,使用者每次造訪網站時,就會觸發稱為「307 內部重新導向」的特殊重新導向,也就是瀏覽器處理重新導向邏輯,而不是伺服器的時間。這可以防止要求遭到攔截,因為要求絕對不會離開瀏覽器,因此安全性較高。此外,這些類型的重新導向速度非常快,因此能在 HTTP 至 HTTPS 躍點期間排除任何明顯的延遲。

從 HTTP 重新導向至 HTTPS,由 HSTS 標頭觸發的 307 內部重新導向。307 重新導向只需 2 毫秒,

Cache-Controlmax-age 指令的語法類似,HSTS 標頭會指定 max-age 指令。這個指令會使用以秒為單位的值,指明這項政策的有效期間:

Strict-Transport-Security: max-age=3600

在上述的示例中,政策生效時間為一小時。

部署 HTTP 嚴格傳輸安全性

部署 HSTS 的主要缺點,就是如果您還不想將來源視為安全來源,假設您有多個子網域提供資源,但這些子網域可能安全無虞。在這種情況下,HSTS 標頭可能會損害你的網站

BBC 採取正確的做法來部署 HSTS。正如他的推文中提到 Neil Craig, bbc.com 設定的初始值為 max-age=10

這表示該政策起初僅於十秒有效。雖然這麼做並不會帶來太大好處,但我們希望您瞭解,在套用 HSTS 的過程中是否會發生問題。隨著時間過去,您可以逐步提高政策內容,看看是否發生問題。在本文撰寫期間,bbc.com 指定了 max-age=86400 的 HTTP 嚴格傳輸安全性政策,此政策幾乎會持續增加。

部署 HSTS 時,您當然不會想出 max-age 值過長。您可能會發現,使用者在遇到問題時,突然想要修正問題。從小規模開始,再逐步遞增!當您確定一切都沒問題後,可以將 max-age 指令設為較長的時間。在全面推出後,建議將 max-age 設為一或兩年

使用 HSTS 預先載入清單,享受更安全快速的初始瀏覽體驗

HSTS 政策只會在首次造訪網站後生效,因此這項福利不會在首次造訪網站時生效。這樣做仍需使用不安全的重新導向。不過,您可以將網站提交至 HSTS 預先載入清單,藉此預先載入 HTTP 嚴格傳輸安全性政策。HSTS 預先載入清單是瀏覽器認定為 HTTPS 採用的硬式編碼網站清單。如果您的網站在預先載入清單中,系統會立即保護首次造訪,並透過 HSTS 將 HTTP 重新導向至 HTTPS 的延遲時間。

歡迎試用

如果 BBC 放心測試 HTTP 嚴格傳輸安全性,也難如行。請稍微為你的網站拍團體照,如果想修改,也歡迎加入 HSTS 預先載入清單,等到確定沒有任何錯誤後,就能為使用者提供更安全更快速的體驗。