隨著網路技術手段不斷地更新迭代,網際網路安全對於企業和個人的重要性都越來越高。因此越來越多的服務商都開始偏向為使用者提供更安全的線上內容訪問。
中間人攻擊
為了保障網站內容安全,誕生了不少加密方式。目前應用最為廣泛的加密方式是 TLS(安全傳輸層協議),它脫胎自廣為人知的 SSL(安全套接字協議),並和 SSL 一起組成了 SSL/TLS 加密,可以讓 HTTP 變身為 HTTPS,為使用者和網站提供安全的資料傳輸。
正常來講,使用 HTTPS 和可靠的 SSL/TLS 證書訪問網站時,加密的傳輸是安全的。但是因為早期認證機構容易被黑客攻擊,進而導致證書安全性漏洞,同時一些常規使用習慣也可能造成安全漏洞,比如我們在輸入網址時,並不會輸入包含加密協議 https:// 的完整 URL,而是隻輸入網站網址,而瀏覽器的自動訪問則會訪問不安全的 http://。這些存在的漏洞為中間人攻擊提供了便利。
中間人攻擊表面上看是系統 A 與系統 B 建立加密連線,但是實際上資料流會被第三方重定向,讓加密連線從系統 A 執行到系統 C,然後才重定向到系統 B。這讓系統 C 的控制者(通常是攻擊者)可以完整地檢視、記錄以及操縱資料流量。攻擊者還通過這種方式將系統 C 作為網路伺服器呈現給系統 A,並給使用者端呈現錯誤的瀏覽頁面。這種攻擊在銀行或者電商行業會直接影響使用者線上交易,給使用者造成嚴重損失。
除去證書本身的問題,一些粗心大意的使用習慣也很容易造成安全漏洞。比如現在很多公共場合都會提供公共 WLAN,我們已經習慣連結並使用,不會去檢查這個 Internet 是誰提供的。黑客可以將自己的計算機設定為熱點,並輕易獲得連結這個熱點的使用者的全部資料流,如果正好有人用這個網路連結過銀行等業務,那黑客很容易通過這個獲取使用者網銀密碼,造成財務損失。。
因此,網際網路工程任務組(IETF)在 2012 年提出了針對該安全性問題的一種解決方案:在 RFC 6797 中指定了 HTTPS 擴充套件的 HTTP 嚴格傳輸安全協議(HSTS)。
什麼是 HSTS
HSTS(HTTP Strict Transport Security,HTTP 嚴格傳輸安全協議)是一種安全機制,旨在保護 HTTPS 連線免受中間人攻擊和會話劫持。它讓網站管理員在 HTTPS 的基礎上,通過 HTTP 頭資訊向瀏覽器傳送訊號,在一個時間段內以 SSL / TLS 加密的形式檢索網站。
這個 HTTP 頭資訊在服務端顯示為:Strict-Transport-Security,它包含強制性的資訊 max-age,也包含了可選引數 includeSubDomains 和 preload 方便配置:
max-age: 指 HSTS 功能生效的時間,以秒為單位。例如 31536000 秒代表一年。
includeSubDomains: 如果指定,則表示域名(例如:upyun.com)對應的每個子域名(例如:www.upyun.com 或 123.example.upyun.com),瀏覽器在訪問時也都會強制採用 HTTPS 進行訪問。
preload: 如果指定,則表示此域名同意申請加入由 Google 發起的 Preload List,申請地址[https://hstspreload.org/]。
在服務端配置完成頭資訊後,當網際網路使用者首次訪問網站時,瀏覽器將從 Strict-Transport-Security 頭資訊中獲取以下指令:
指向相應網站的所有未加密連結都必須被加密連結覆蓋(http:// 到 https://)。
如果不能保證連線的安全性(例如:證書無效),則必須終止該連線。同時向用戶顯示錯誤訊息。
如何開啟 HSTS
如果是對安全性要求較高的網站,一般都會選擇開啟 HSTS 。
但是 HSTS 並不是隨意開啟的,它需要支援它的瀏覽器。目前市場上支援 HSTS 的瀏覽器如下:(對於那些不支援的瀏覽器,會忽略此響應頭,對使用者的訪問無影響,可以不用擔心)
而具體開啟 HSTS 則可以登陸又拍雲控制檯,依次進入:服務 > 功能配置 > HTTPS > HSTS,點選管理進行配置開啟。
又拍雲自 17 年起就已經支援配置 HSTS,配置步驟簡單,操作方便。但是這裡需要特別提醒的是,如果有引數設定不當可能會導致網站無法訪問,大家如果遇到問題可以直接聯絡我們的客服小姐姐哦~
HTTPS 網站的預載入列表
當然光靠 HSTS 並不是萬無一失的,因為 HSTS 的響應頭是由伺服器返回的,需要使用者先發起訪問才能獲取到這個響應頭。獲取響應頭後才會進行強制 HTTPS 訪問操作。這也就意味著每次訪問還是容易受到攻擊風險。
為儘可能的減小這種風險,目前市面上所有的瀏覽器都加入了 Google 提供的 HSTS Preload List。只要加入到這個列表中,所有的通過瀏覽器訪問請求都會強制走 HTTPS,在很大程度上可以杜絕“第一次”訪問的劫持,最大限度地提高 HTTPS 訪問的安全性。
如果你需要將自己的網站加入 HSTS Preload ,那必須確保符合如下基本要求:
所有網站頁面都必須使用有效的 SSL 證書
HTTP URL 必須定向到同一主機的 HTTPS URL
所有子域(包括 www 子域)必須支援 HTTPS 且可用
必須通過具有以下引數的域名來傳遞 HSTS 頭資訊:
- 網站需要始終滿足上訴要求,否則會被自動刪除
在資訊保安越來越重要的今天,及時更新網站的安全手段,維護網站和使用者的安全,避免因一時的疏忽造成損失才是最好的選擇。