淺析HSTS

淺析HSTS

1、HSTS是什麼?

HSTS全稱:HTTP Strict Transport Security,意譯:HTTP嚴格傳輸安全,是一個Web安全策略機制。

chrome

2、HSTS解決什麼問題?

它解決的是:網站從Http轉跳到Https時,可能出現的安全問題。json

通常從Http跳轉Https的流程:
瀏覽器

Client從Http切換到Https前是明文傳輸,所以是能夠被Man-In-The-Middle劫持的,以下流程:


安全

3、HSTS如何解決?

要解決從Http切換到Https被劫持的問題,只要一開始就沒有Http請求便可,流程以下:


網站

4、HSTS如何知道,哪些請求該轉爲Https,哪些不應轉?

方案1. 最近一次請求的Https響應中(Response)中,帶上HSTS Header:

Strict-Transport-Security: <max-age=>[; includeSubDomains][; preload]
  • max-age:
    • 必選,單位:秒。
    • 意義:HSTS header過時時間,通常設置爲1年,即31536000秒。而每次Response Header都帶上HSTS Header,則可不斷刷新其過時時間。
  • includeSubDomains:
    • 可選。
    • 意義:須要開啓HSTS的域名/子域名。
  • preload:
    • 可選
    • 意義:當加入了瀏覽器內置Preload List時才須要設置該項。

方案2. HSTS Preload List

方案1仍是有個漏洞:code

  • 若是第一次訪問網站A就被劫持了,哪方案1豈不白搭?
  • 清Cookies或者HSTS Header過時了,下次訪問豈不又風險重重?

基於以上問題,就須要方案2(HSTS Preload List):blog

官方說明:

This is a list of sites that are hardcoded into Chrome as being HTTPS only.
HSTS Preload List是一個站點列表,它被hardcode寫入Chrome中,列表中的站點將會默認使用 HTTPS 進行訪問。

Most major browsers (Chrome, Firefox, Opera, Safari, IE 11 and Edge) also have HSTS preload lists based on the Chrome list. (See the HSTS compatibility matrix.)    
主流瀏覽器(Firefox, Opera, Safari, IE 11 and Edge)都有和Chrome同樣的HSTS Preload List。

這樣,就直接從源頭上封死Http轉跳Https時被劫持的可能性。

get

5、其餘相關:

相關文章
相關標籤/搜索