為什麼我們要使用新型Web安全協議HSTS?

2020-12-16 站長之家

HTTP Strict Transport Security (通常簡稱為HSTS) 是一個安全功能,它告訴瀏覽器只能通過HTTPS訪問當前資源, 禁止HTTP方式。

0×01. Freebuf百科:什麼是Strict-Transport-Security

我摘自owasp上的一段定義:

HTTP Strict Transport Security (HSTS) is an opt-in security enhancement that is specified by a web application through the use of a special response header. Once a supported browser receives this header that browser will prevent any communications from being sent over HTTP to the specified domain and will instead send all communications over HTTPS. It also prevents HTTPS click through prompts on browsers.The specification has been released and published end of 2012 as RFC 6797 (HTTP Strict Transport Security (HSTS)) by the IETF. (Reference see in the links at the bottom.)

一個網站接受一個HTTP的請求,然後跳轉到HTTPS,用戶可能在開始跳轉前,通過沒有加密的方式和伺服器對話,比如,用戶輸入https://foo.com或者直接foo.com。這樣存在中間人攻擊潛在威脅,跳轉過程可能被惡意網站利用來直接接觸用戶信息,而不是原來的加密信息。網站通過HTTP Strict Transport Security通知瀏覽器,這個網站禁止使用HTTP方式加載,瀏覽器應該自動把所有嘗試使用HTTP的請求自動替換為HTTPS請求。

0×02. 我們為什麼需要開啟Strict-Transport-Security  

想想這樣一種場景:

有的網站開啟了https,但為了照顧用戶的使用體驗(因為用戶總是很賴的,一般不會主動鍵入https,而是直接輸入域名, 直接輸入域名訪問,默認就是http訪問)同時也支持http訪問,當用戶http訪問的時候,就會返回給用戶一個302重定向,重定向到https的地址,然後後續的訪問都使用https傳輸,這種通信模式看起來貌似沒有問題,但細緻分析,就會發現種通信模式也存在一個風險,那就是這個302重定向可能會被劫持篡改,如果被改成一個惡意的或者釣魚的https站點,然後,你懂得,一旦落入釣魚站點,數據還有安全可言嗎?

對於篡改302的攻擊,建議伺服器開啟HTTP Strict Transport Security功能,這個功能的含義是:

當用戶已經安全的登錄開啟過htst功能的網站 (支持hsts功能的站點會在響應頭中插入:Strict-Transport-Security) 之後,支持htst的瀏覽器(比如chrome. firefox)會自動將這個域名加入到HSTS列表,下次即使用戶使用http訪問這個網站,支持htst功能的瀏覽器就會自動發送https請求(前提是用戶沒有清空緩存,如果清空了緩存第一次訪問還是明文,後續瀏覽器接收到伺服器響應頭中的Strict-Transport-Security,就會把域名加入到hsts緩存中,然後才會在發送請求前將http內部轉換成https),而不是先發送http,然後重定向到https,這樣就能避免中途的302重定向URL被篡改。‍‍進一步提高通信的安全性。‍‍

上面是我自己的理解,下面是owasp中文站點關於hsts的描述:

HSTS的作用是強制客戶端(如瀏覽器)使用HTTPS與伺服器創建連接。伺服器開啟HSTS的方法是,當客戶端通過HTTPS發出請求時,在伺服器返回的超文本傳輸協議響應頭中包含Strict-Transport-Security欄位。非加密傳輸時設置的HSTS欄位無效。

比如,https://example.com/ 的響應頭含有Strict-Transport-Security: max-age=31536000; includeSubDomains。這意味著兩點:

在接下來的一年(即31536000秒)中,瀏覽器只要向example.com或其子域名發送HTTP請求時,必須採用HTTPS來發起連接。比如,用戶點擊超連結或在地址欄輸入 https://www.example.com/ ,瀏覽器應當自動將 http 轉寫成 https,然後直接向 https://www.example.com/ 發送請求。

在接下來的一年中,如果 example.com 伺服器發送的TLS證書無效,用戶不能忽略瀏覽器警告繼續訪問網站。

HSTS可以用來抵禦SSL剝離攻擊。SSL剝離攻擊是中間人攻擊的一種,由Moxie Marlinspike於2009年發明。他在當年的黑帽大會上發表的題為「New Tricks For Defeating SSL In Practice」的演講中將這種攻擊方式公開。SSL剝離的實施方法是阻止瀏覽器與伺服器創建HTTPS連接。它的前提是用戶很少直接在地址欄輸入https://,用戶總是通過點擊連結或3xx重定向,從HTTP頁面進入HTTPS頁面。所以攻擊者可以在用戶訪問HTTP頁面時替換所有https://開頭的連結為https://,達到阻止HTTPS的目的。

HSTS可以很大程度上解決SSL剝離攻擊,因為只要瀏覽器曾經與伺服器創建過一次安全連接,之後瀏覽器會強制使用HTTPS,即使連結被換成了HTTP

另外,如果中間人使用自己的自籤名證書來進行攻擊,瀏覽器會給出警告,但是許多用戶會忽略警告。HSTS解決了這一問題,一旦伺服器發送了HSTS欄位,用戶將不再允許忽略警告。

0×03. Strict-Transport-Security的一些不足

用戶首次訪問某網站是不受HSTS保護的。這是因為首次訪問時,瀏覽器還未收到HSTS,所以仍有可能通過明文HTTP來訪問。解決這個不足目前有兩種方案,一是瀏覽器預置HSTS域名列表,Google Chrome、Firefox、Internet Explorer和Spartan實現了這一方案。二是將HSTS信息加入到域名系統記錄中。但這需要保證DNS的安全性,也就是需要部署域名系統安全擴展。截至2014年這一方案沒有大規模部署。

由於HSTS會在一定時間後失效(有效期由max-age指定),所以瀏覽器是否強制HSTS策略取決於當前系統時間。部分作業系統經常通過網絡時間協議更新系統時間,如Ubuntu每次連接網絡時,OS X Lion每隔9分鐘會自動連接時間伺服器。攻擊者可以通過偽造NTP信息,設置錯誤時間來繞過HSTS。解決方法是認證NTP信息,或者禁止NTP大幅度增減時間。比如Windows 8每7天更新一次時間,並且要求每次NTP設置的時間與當前時間不得超過15小時

0×04. 我的一些測試

1). 測試1

目標域名:portal.fraudmetrix.cn (這個站點不支持hsts功能) 同盾科技的風險控制管理系統(打個軟廣,同盾科技,基於大數據,專注反欺詐)。

第一次訪問:在瀏覽器地址欄鍵入:portal.fraudmetrix.cn

可以看到:

這個域名並不在chrome瀏覽器的hsts的緩存中,也不在hsts中的preload list中(像facebook、twitter等網站已經內置在preload list中,所以每次請求這些站點的時候瀏覽器都會自動將http 轉換成htttps),所以不會在發送請求前將http轉換成https請求。

我們來把這個站點手動加入到chrome瀏覽器的hsts緩存中:

在未清空chrome瀏覽器歷史記錄的前提下,我們再次訪問這個站點:

可以看到,一個307 響應碼,這是chrome瀏覽器的內部轉換,將http轉換成https後再發送請求。

備註:為什麼我們要求在未清空chrome瀏覽器的緩存前訪問呢?

因為如果清空了chrome瀏覽器的緩存之後,我們手動加入到hsts緩存中的域名就會被清除,也就不會看到預期的效果了。

2). 測試2

我們先清空chrome瀏覽器的緩存,然後在瀏覽器的地址欄中鍵入 www.alipay.com 

可以看到www.alipay.com(支付寶)這個站點並沒有在chrome 瀏覽器的內置的preload list中,所以第一次訪問的時候,chrome瀏覽器並不會將http轉換成https。

而是由前端的F5的負載均衡(BigIP)器將http請求重定向到https請求。

相關焦點

  • 義大利阻止Fastweb與華為籤署5G協議
    【CNMO新聞】正處於「黑暗時刻」的華為,最近又迎來一個壞消息,繼瑞典之後,義大利宣布阻止華為與Fastweb籤署5G的相關協議。 當地時間10月24日,路透社報導稱,義大利官方阻止該國的電信集團Fastweb和華為籤署5G核心網絡供應設備的協議。
  • web應用安全框架選型:Spring Security與Apache Shiro
    web應用安全框架選型:Spring Security與Apache Shiro一、 SpringSecurity 框架簡介Spring Security 是強大的,且容易定製的,基於Spring開發的實現認證登錄與資源授權的應用安全框架。
  • Web1.0與Web2.0和Web3.0的本質區別是什麼
    到用戶直接交互的web2.0,再到用戶自主控制數據的web3.0。經過十多年的發展,web2.0的已經極大豐富。而web3.0才剛剛露出尖尖角,它以區塊鏈和加密貨幣為重要基礎,引導網際網路走向個人控制數據所有權,並實現個人隱私。但向真正走向web3.0,並非坦途,web2.0經過十多年的發展,由全世界如此眾多的聰明人不斷改進才取得今日的成就,而web3.0要成為主流採用的網絡,所需的時間也不可能短。
  • 網盾極風雲:什麼是安全超文本傳輸協議
    小科普:一、SSL安全套接層(Secure Socket Layer,SSL)協議是網頁瀏覽器與網站伺服器之間安全交換信息的協議,提供兩個基本的安全服務:保密和鑑別。SSL是Netscape於1994年開發的,後來成為了世界上最著名的web安全機制,所有主要的瀏覽器都支持SSL協議。
  • web開發我更喜歡使用GO語言
    go語言在2007年9月設計,然後於2009年11月正式向外宣布推出使用,而且是開放原始碼項目,首先在Linux系統與go語言可能是Google開發的程式語言,迅速受到開發的關注並願意使用它,在2016年被TIOBE 選為「TIOBE 年最佳程式語言」,可想而知go能被開發者認可一定有它獨特的優勢,而我更喜歡使用GO語言web開發。
  • web開發實戰教程:Apache Shiro在web項目的應用
    web開發實戰教程今天準備分享一下Apache Shiro 在web開發中的應用。shiro安全框架是目前為止作為登錄註冊最常用的框架,因為它十分的強大簡單,提供了認證、授權、加密和會話管理等功能 。認證:驗證用戶的身份授權:對用戶執行訪問控制:判斷用戶是否被允許做某事會話管理:在任何環境下使用 Session API,即使沒有 Web 或EJB 容器。加密:以更簡潔易用的方式使用加密功能,保護或隱藏數據防止被偷窺Realms:聚集一個或多個用戶安全數據的數據源單點登錄(SSO)功能。
  • 終端命令行之Web瀏覽器
    Linux命令行是強大的工具,命令行是我們的日常工作,命令行更是我們日常生活。之前蟲蟲給大家寫過一些命令的的介紹,命令行的工具,命令行下的開發。實際上命令行也是我們不可或缺的生活。本文我們來介紹一下命令行下的網絡衝浪工具命令行瀏覽器。
  • Docker 快速部署兩個開源堡壘服務-Webterminal和JumpServer
    我一直在尋找一種安全的方法來管理我的雲基礎架構,並在Guihub中找到了這兩個項目。兩者都提供了一個Web GUI,以支持主要的遠程管理協議以連接到遠程目標。目前,它支持近90%的遠程管理協議,例如vnc,ssh,rdp,telnet,sftp… 當用戶使用此項目管理伺服器時,它支持監視和記錄用戶操作!就像視頻一樣 希望你喜歡它。使用docker運行:# docker pull webterminal/webterminal
  • IPFS如何使用Terminal部署Web應用程式
    收集我們的工具如果您已經知道如何設置Vue CLI項目,則可以直接跳至本部分確保已安裝Node.js 8.9或更高版本(建議使用8.11.0+)。如果沒有,您可以前往這裡。npm預裝了node.js要安裝Vue CLI 4,請運行以下命令:除非通過Node.js版本管理器將npm安裝在系統上(例如n或nvm),否則您需要管理員特權才能執行這些操作。
  • 首發| 加密錢包安全審計清單:你的錢包是否安全?
    加密錢包基礎審計清單要對一個應用程式進行評估,首先需要了解其工作原理→代碼實現是否遵循最佳安全標準→如何對安全性不足的部分進行修正及提高。CertiK技術團隊針對加密錢包製作了一個基礎審計清單,這份清單反映了所有形式的加密錢包應用(手機、web、擴展、桌面),尤其是手機和web錢包是如何生產和儲存用戶私鑰的。應用程式如何生成私鑰?
  • 義大利電訊公司、KKR、Fastweb達成協議,將共同投資義大利全國網絡
    義大利電訊公司(Telecom Italia SPA, TIT.MI)周一晚間表示,已與美國投資機構KKR Infrastructure和Fastweb達成協議,將共同投資一個名為FiberCop的新項目,旨在創建一個全國性的超快寬帶網絡。義大利電訊公司表示,新實體「將向所有運營商提供次級銅纜和光纖網絡的被動接入服務」。
  • 25 個 Web 開發人員使用的 Chrome 擴展
    When ever you look at any web page, the web developer within you might start thinking how that particular web
  • 武威:我們要當新型職業農民
    原標題:「我們要當新型職業農民」本報記者範武平「它能裝多少農藥?」「飛一次能噴多少畝?」11月28日,武威新型職業農民農業技術交流研討會暨武威市第一屆飛防植保技術交流研討會召開,來自各縣區的部分種植大戶、家庭農場、農民合作社和農業企業等新型農業經營主體帶頭人參會。培訓中,來自農技中心、農廣校的專家及標普農業、大疆植保無人機技術人員結合農業種植現狀、植保飛防、改良土壤環境、農藥安全使用等與新型職業農民進行交流。
  • 終極Web安全防護解決方案—主動出擊
    Web信息系統各種安全問題潛伏在Web系統中,Web系統的時時刻刻遭受各種攻擊的安全威脅。現在大多數的企業已經意識到Web信息系統的安全威脅,採取了眾多安全措施,花費大量的人力物力在網絡及伺服器的安全上,為什麼信息系統還是得不到真正的安全呢?
  • 為什麼我們國家使用的是220V電壓?110V的低電壓不是更安全嗎?
    在我們中國,大部分地區使用的是220V電壓。但並不是所有國家都像我們國家一樣使用220V電壓,像美國用的就是110V電壓,還有少部分國家使用127V和240V的電壓,所以去國外旅遊的朋友都清楚必備之一的物品——電源轉換器來調整電壓。
  • 手把手教你安全使用身份證複印件
    To view this video please enable JavaScript, and consider upgrading to a web 手把手教你安全使用身份證複印件
  • 群暉+ Docker + Calibre-Web 搭建電子書管理系統(電子圖書館)
    Calibre-Web安裝安裝環境:群暉Docker鏡像:janeczku/calibre-web目前我自己用的是johngong/calibre-web/,這裡解釋下為什麼沒有使用janeczku本文中我還是使用janeczku/calibre-web演示安裝過程,使用johngong/calibre-web/演示使用效果。
  • IPFS的分布式Web新協議∣實現分布式雲存儲
    5G時代數據渠道更加多元化,網絡除承載已有的網際網路數據,更要承載智慧工廠、智慧交通等持續化、碎片化、強實時、大流量的數據。這些數據在價值日益凸顯的同時,個人信息保護、數據跨境流動和安全風險等問題也成為焦點。分布式雲存儲和中心化存儲誰才是必然趨勢?IPFS是什麼?
  • 如何用Python和Scrapy將Web轉化為數據
    基本上,每個web頁面都以HTML格式從伺服器返回。這意味著我們實際的數據被很好地打包在HTML元素中。它使得檢索特定數據的整個過程非常簡單和直接。本教程將是您學習使用Python程式語言進行web抓取的最終指南。首先,我將向您介紹一些基本示例,以使您熟悉web抓取。稍後,我們將使用這些知識從Livescore中提取。
  • 喬州前參議院民主黨主席:我們到底為什麼要購買不安全的投票機
    喬州參議院民主黨主席:「我們到底為什麼要購買不安全的投票機」(國家脈動)2019年時,喬治亞州參議院民主黨主席Elena Parent抨擊Dominion投票機是「國家安全專家反對使用的」,她質疑說:「我們到底為什麼要購買不安全的機器?選民反對的,國家安全專家反對的,在紐約有可能被取消認證的,比手寫紙質選票貴得多的機器,有可能在兩到四年內被國家選舉當局取消認證的機器,而我們(為買這些)發行20年的債券?」