1. 程式人生 > >Https優化方案(請求響應篇--HSTS)

Https優化方案(請求響應篇--HSTS)

HSTS(HTTP Strict Transport Security, HTTP嚴格傳輸安全協議)表明網站已經實現了TLS,要求瀏覽器對使用者明文訪問的Url重寫成HTTPS,避免了始終強制302重定向的延時開銷。

HSTS的實現原理是:當瀏覽器第一次HTTP請求伺服器時,返回的響應頭中增加Strict-Transport-Security,告訴瀏覽器在指定的時間內,這個網站必須通過HTTPS協議來訪問。也就是對於這個網站的HTTP地址,瀏覽器需要現在本地替換為HTTPS之後再發送請求。
其配置如下所示。max-age表明HSTS在瀏覽器中的快取時間,includeSubdomainscam引數指定應該在所有子域上啟用HSTS,preload引數表示預載入

headers->set('Strict-Transport-Security','max-age=172800;includeSubdomains; preload');

在使用HSTS的過程中仍有一些值得注意的問題:

  1. HSTS將全部的證書錯誤視為致命的。因此,一旦主域使用HSTS,瀏覽器將放棄對域名所有無效證書站點的連線。
  2. 首次訪問仍然使用HTTP,然後才能啟用HSTS。無法保障首次訪問的安全性如何解決?可以通過preloading預載入的方式,與瀏覽器廠商約定好一份支援HSTS的網站清單來緩解。目前Google已經提供了線上註冊服務
  3. 如何撤銷HSTS?通過Strict-Transport-Security: max-age=0將快取設定為0可以撤銷HSTS。但是隻有當瀏覽器再次訪問網站並且得到響應更新配置時才能生效。