Home >> Blog >> 什麼是 HSTS strict transport security 以及如何執行?
什麼是 HSTS strict transport security 以及如何執行?
想像一下,如果你願意的話,你在你最喜歡的餐廳,或者剛剛從那個會議回到你的酒店房間,你想使用他們的免費 Wi-Fi。您是否注意到他們的 Wi-Fi 密碼印在紙上並且從未更改過?
一個惡毒的黑客在同一家酒店預訂了房間。他們正在竊聽通過這個不安全的無線網絡的所有連接。
在黑客的惡行中,有一種叫做“資料包嗅探器”的東西。資料包嗅探器是一種網絡實用程序,可以分析並將任務注入到通過目標網絡傳輸的資料流中。
該黑客可以通過 HTTP 捕獲任何僅依賴 301 重定向以從 HTTP 切換到 HTTPS 的網站的網絡流量。這種方法為黑客提供了一個機會之窗,可以剝離您的 SSL 加密並竊取有價值的資料,或者更糟糕的是,提供一個虛假的登錄門戶頁面。
這就是為什麼您的網站必須使用 HTTP 嚴格傳輸安全而不是 HTTPS。獲得 SSL 證書是遠遠不夠的。
什麼是 HSTS?
HTTP 嚴格傳輸安全 (HSTS) 是一個 Web 伺服器指令,它通知用戶代理和 Web 瀏覽器如何通過在開始時發送並返回給瀏覽器的響應標頭來處理其連接。
這將設置 Strict-Transport-Security 策略字段參數。它通過 HTTPS 加密強制這些連接,忽略通過 HTTP 加載該域中任何資源的任何腳本調用。HSTS 只是您的網絡伺服器或網絡託管服務捆綁的安全設置中的一個箭頭。
貴公司為什麼要實施 HSTS?
您永遠不會在不鎖門的情況下關閉實體店或家,對嗎?您甚至可以在門口安裝金屬探測器來控制收縮。資料可能與商店或房屋中的實物一樣有價值,因此將它們鎖定和保護同樣重要。掛鎖您的網站有時是不夠的,因為人們仍然會找到通過 http:// 訪問您的網站的方法。HSTS 強制瀏覽器和應用程序連接使用 HTTPS(如果可用)。即使有人只是輸入 www 或 http://。
HTTPS 在 Google 中是一個很小的排名因素,與頁面速度和移動響應能力等許多其他因素一起被歸類為“網站質量”分數。
設置從 http:// 到 https:// 的 301 重定向不足以完全保護您的域名。HTTP 的不安全重定向仍然存在機會之窗。
$ curl --head http://www.facebook.com HTTP/1.1 301 永久移動位置:https://www.facebook.com/
黑客仍然能夠捕獲站點 cookie、會話 ID(通常作為 URL 參數發送)或強制重定向到看起來與您的網站完全相同的網絡釣魚站點。哎喲!
通過安裝 Strict-Transport-Security 標頭,壞人幾乎不可能收集到任何信息!甚至沒有你的瑜伽時間表!
$ curl --head https://www.facebook.com HTTP/1.1 200 OK Strict-Transport-Security: max-age=15552000; 預載
HSTS 實施有多受歡迎?
價值數十億美元的公司 Google 於 2016 年 7 月 29 日正式推出了 HSTS 安全策略。
HSTS 項目最早於 2009 年起草。2015年 6 月 8 日,首席信息官托尼·斯科特 (Tony Scott)發出了一份備忘錄 ,而早在 2015 年就一直在進行更強有力的努力。
Facebook、Google、Gmail、Twitter 和 PayPal 只是當今實施 HSTS 的一些主要社交網絡和支付門戶。甚至美國政府、總統執行辦公室也發送了一份 M-15-13 備忘錄 - 要求跨聯邦網站和 Web 服務進行安全連接的政策。而整個 HSTS 項目最早是在 2009 年起草的。
如何為您的網站實施 HSTS
如果您在內容結構中使用子域,則需要通配符證書來僅涵蓋 HTTPS。否則,您可以使用域驗證、組織驗證或擴展驗證 SSL 證書非常安全。確保您已安裝這些並正常工作。
下面的初始階段將測試您的 Web 應用程序、用戶登錄和會話管理。它將每 5 分鐘到期一次 HSTS。繼續測試一周零一個月。修復部署中可能出現的任何問題。修改 max-age=xxx。一周 = 604800;一個月 = 2592000。在測試完成後附加預加載。
在您確信 HSTS 與您的 Web 應用程序一起工作後,將 max-age 修改為 63072000。那將是兩年。這就是 Chromium 項目希望在您的預加載提交中看到的內容!
HSTS 永久要求
- 您的網站必須具有有效的 SSL 證書。您可以在GlobalSign 的 SSL Checker 上檢查您的 SSL 的有效性。
- 使用 301 永久重定向將所有 HTTP 鏈接重定向到 HTTPS。
- 您的 SSL 證書必須涵蓋所有子域。考慮訂購通配符證書。
- 在基域上為 HTTPS 請求提供 HSTS 標頭。
- Max-age 必須至少為 10886400 秒或 18 週。如上所述,爭取兩年的價值!
- 如果您有 includeSubDomains 指令,則必須指定它們!
- 必須指定預加載指令。
這些要求在 2016 年 2 月 29 日或之後仍然有效。未能遵守這些要求將導致您的商家信息被刪除!如果出於任何原因您需要從此列表中刪除您的 HTTPS ONLY 域,請 遵循本指南。
Apache Web 伺服器的 HSTS 安裝
您可以將其添加到頂級文檔根文件夾(例如 public_html 或 httpdoc)的 .htaccess 文件中
# 使用 HTTP Strict Transport Security 強制客戶端僅使用安全連接 Header 總是設置 Strict-Transport-Security "max-age=300; includeSubDomains; preload"
lighttpd 的 HSTS 安裝
將此添加到您的 Lighttpd 配置文件 /etc/lighttpd/lighttpd.conf
server.modules += ( "mod_setenv" ) $HTTP["scheme"] == "https" { setenv.add-response-header = ("Strict-Transport-Security" => "max-age=300; includeSubDomains;預加載") }
NGINX 的 HSTS 安裝
這在您的 site.conf 文件中,我創建了一個 帶有附加安全參數 的修改要點。
add_header Strict-Transport-Security 'max-age=300; 包括子域;預載;總是;'
在研究 NGIX 設置的過程中,我發現一個 政府網站 提供了不正確的信息,並提供了必要的代碼更改,無論 HTTP 響應代碼返回什麼都強制 HSTS。
IIS 伺服器的 HSTS 安裝
protected void Application_BeginRequest(Object sender, EventArgs e) { switch (Request.Url.Scheme) { case "https": Response.AddHeader("Strict-Transport-Security", "max-age=31536000; includeSubDomains; preload"); 休息; case "http": var path = "https://" + Request.Url.Host + Request.Url.PathAndQuery; Response.Status = "301 永久移動"; Response.AddHeader("位置", 路徑); 休息; } }
安裝我的建議後,請轉到 HSTS 預加載申請表 ,並將您的網站列在預加載列表中。您的域需要一段時間才能包含在該列表中。
什麼是 HSTS 預加載?
HSTS 預加載是瀏覽器內置的一項功能,全球主機列表僅在其站點上強制使用 HTTPS。
此列表由 Chromium Project編譯, 並被 Chrome、Firefox 和 Safari 使用。這些站點不依賴於 HSTS 響應標頭的發布來執行策略。相反,瀏覽器已經知道域名只需要使用 HTTPS,並在任何連接或通信發生之前推送 HSTS。
這消除了攻擊者通過 HTTP 攔截和篡改重定向的機會。在這種情況下仍然需要 HSTS 響應標頭,並且必須為那些不使用預加載 HSTS 列表的瀏覽器保留原位。
參考
HTTP 嚴格傳輸安全性已經存在將近八年了。您的 Web 基礎架構中的此 HTTPS Only 策略將阻止壞人進入並保護您的敏感資料。只需幾分鐘即可由您的網站管理員或網絡託管服務安裝,並使用 GlobalSign 的 SSL Checker提高您的 SSL 分數。