收到一個 HTTP 請求時,伺服器可以傳送一個 Set-Cookie (en-US) 的標頭和回應。 Cookie 通常存於瀏覽器中,並隨著請求被放在Cookie HTTP 標頭內,傳給同個伺服器。 可以註明 Cookie 的有效或終止時間,超過後 Cookie 將不再發送。 此外,也可以限制 Cookie 不傳送到特定的網域或路徑。 CSP 指令 (en-US) Content-Security-Policy (en-US) 回應檔頭讓網站管理員控制哪些頁面上的資源能被用戶端程式(user agent)載入。 除了少數特例外,此政策主要關於指定來源伺服器和腳本程式的端點(endpoints)。
另外,還有一種安全超文本傳輸協定(S-HTTP)的HTTP安全傳輸實作,但是HTTPS的廣泛應用而成為事實上的HTTP安全傳輸實作,S-HTTP並沒有得到廣泛支援。
https://ps5.mediatagtw.com/article/krugernationalpark: 建立 cookies
但你可曾費心留意過,平時瀏覽的那些網站甚至是自家網站的網址開頭是HTTP還是HTTPS? Google為什麼要鼓勵大家將HTTP轉換為HTTPS? 跟著本文的介紹,一起瞭解HTTP與HTTPS,並且透過htaccess轉址教學,讓你的網站安全有保障。 HTTPS 協議是由 SSL+HTTP構建的可進行加密傳輸、身份認證的網絡協議,要比 HTTP安全,可防止數據在傳輸過程中被竊取、改變,確保數據的完整性。 ① 客戶端的瀏覽器首先要通過網絡與服務器建立連接,該連接是通過TCP 來完成的,一般 TCP 連接的端口號是80。 建立連接後,客戶機發送一個請求給服務器,請求方式的格式爲:統一資源標識符(URL)、協議版本號,後邊是 MIME 信息包括請求修飾符、客戶機信息和許可內容。
- 客戶端發送協商請求給服務端, 其中包含自己支持的非對稱加密的密鑰交換算法 ( 一般是RSA), 數據簽名摘要算法 ( 一般是SHA或者MD5) , 加密傳輸數據的對稱加密算法 ( 一般是DES),以及加密密鑰的長度。
- Cookie 通常被用來保持使用者的登入狀態——如果兩次請求都來自相同的瀏覽器。
- 服務端和客戶端的信息傳輸都會通過 TLS 進行加密,所以傳輸的數據都是加密後的數據。
- HTTPS 主要由兩部分組成:HTTP + SSL / TLS,也就是在 HTTP 上又加了一層處理加密信息的模塊。
由此可見,HTTP是否轉換為HTTPS,對網站的SEO影響甚大。 (1) 從 HTTP 轉向 HTTPS 的應用改造要點:HTTP 頁面分析評估信息數據安全等級;WEB 頁面訪問改造;站點證書申請和部署;啓用 HTTPS 協議支持,增加 TCP-443 端口,對外服務。 可以看到,鑑於電子商務等安全上的需求,HTTPS對比HTTP,在安全方面已經取得了極大的增強。 總結來說,HTTPS的改進點在於創造性的使用了非對稱加密算法,在不安全的網路上,安全的傳輸了用來進行對稱加密的密鑰,綜合利用了非對稱加密的安全性和對稱加密的快速性。 由於非對稱加密的運算量較高,傳遞回應較慢;實際的架構上,會透過公開金鑰加密傳遞出共用的金鑰,再透過共用金鑰加密進行後續的傳遞,兼顧了安全性及傳遞速度。
https://ps5.mediatagtw.com/article/krugernationalpark: JavaScript 使用 Document.cookie 存取
HTTPS經由HTTP進行通訊,但利用SSL/TLS來加密封包。 HTTPS開發的主要目的,是提供對網站伺服器的身分認證,保護交換資料的隱私與完整性。 這個協定由網景公司(Netscape)在1994年首次提出,隨後擴展到網際網路上。
(2)數據完整性:及時發現被第三方篡改的傳輸內容。 https://ps5.mediatagtw.com/article/krugernationalpark2025 就像快遞員雖然不知道包裹裏裝了什麼東西,但他有可能中途掉包,數據完整性就是指如果被掉包,我們能輕鬆發現並拒收。 HTTP不是安全的,而且攻擊者可以透過監聽和中間人攻擊等手段,取得網站帳戶和敏感訊息等。
https://ps5.mediatagtw.com/article/krugernationalpark: 主要作用
Https實質上是http的升級版,彌補了http的不安全性等因素。 特別是在某些國家可以控制 CA 根證書的情況下,中間人攻擊一樣可行。 相同網絡環境下,HTTPS 協議會使頁面的加載時間延長近 50%,增加 10%到 20%的耗電。 此外,HTTPS 協議還會影響緩存,增加數據開銷和功耗。 (1)數據保密性:保證數據內容在傳輸的過程中不會被第三方查看。 就像快遞員傳遞包裹一樣,都進行了封裝,別人無法獲知裏面裝了什麼。
https://ps5.mediatagtw.com/article/krugernationalpark: 加密
客戶端檢查服務端證書,確認是否由自己信任的證書籤發機構簽發。 如果不是,將是否繼續通訊的決定權交給用戶選擇 ( 注意,這裏將是一個安全缺陷 )。 如果檢查無誤或者用戶選擇繼續,則客戶端認可服務端的身份。 另外,HTTP在傳輸客戶端請求和服務端響應時, 唯一的數據完整性檢驗就是在報文頭部包含了本次傳輸數據的長度, 而對內容是否被篡改不作確認。
https://ps5.mediatagtw.com/article/krugernationalpark: 瀏覽器實作
像是可能大家都有聽過的 凱薩加密法,就是一個非常基本的加密方式:將明文的字母全部位移固定的距離,解密時再位移回來;例如明文是 「EGG」,位移距離(金鑰)為 3,那麼加密後的密文就會是「HJJ」。 截至2018年6月,Alexa排名前100萬的網站中有[34.6%使用HTTPS作為預設值,網際網路141387個最受歡迎網站的43.1%具有安全實施的HTTPS,以及45%的頁面載入(透過Firefox紀錄)使用HTTPS。 2017年3月,中國註冊域名總數的0.11%使用HTTPS。 先說大白話的結論:“HTTPS和HTTP都是數據傳輸的應用層協議,區別在於HTTPS比HTTP安全”。 對於 cookie 的使用並沒有法律上或技術上的規定,但可利用 DNT 標頭,指示網頁應用程式關閉頁面的追蹤、或跨站的使用者追蹤。 HTTP 狀態回應碼 HTTP 狀態碼用來表示特定的 HTTP 請求是否已成功完成。
https://ps5.mediatagtw.com/article/krugernationalpark: 協定層
在整個SSL握手中,都有一個唯一的隨機數來標記SSL握手。 這樣防止了攻擊者嗅探整個登錄過程,獲取到加密的登錄數據之後,不對數據進行解密, 而直接重傳登錄數據包的攻擊手法。 當然,真實的環境不會用這種很容易被解出來的加密方式,而是會透過例如 AES 等方式進行加密;但兩者同樣的是,都會透過同一個金鑰來進行加密與解密,因此我們把這類的加密方式稱為「共用金鑰加密」,或是「對稱式加密」。
https://ps5.mediatagtw.com/article/krugernationalpark: 建立 cookies
假想一下:Alice 和 Bob 準備進行通訊,而 https://ps5.mediatagtw.com/article/krugernationalpark Eve 是不懷好意的竊聽者;Alice 把要傳遞的明文經過 Bob 的公鑰進行加密後,再進行傳遞,由於 Bob 的私鑰只有 Bob 擁有,即使 Eve 竊取到了密文,也無法將其解密回明文。 HTTP 全名是 超文本傳輸協定(HyperText Transfer Protocol),內容只規範了客戶端請求與伺服器回應的標準,實際上是藉由 TCP 作為資料的傳輸方式。 HTTPS也可被用作客戶端認證手段來將一些訊息限制給合法的使用者。
https://ps5.mediatagtw.com/article/krugernationalpark: 加密
瀏覽器可能儲存並於下一次請求回傳 cookie 至相同的伺服器。 Cookie 通常被用來保持使用者的登入狀態——如果兩次請求都來自相同的瀏覽器。 舉例來說,它記住了無狀態(stateless) (en-US)HTTP 協議的有狀態資訊。 雖然HTTPS在資料傳輸上比較安全,但並不是每個網站都需要使用者輸入資料,為什麼現今會掀起一股HTTP轉換HTTPS的浪潮呢? HTTPS (全稱:Hypertext Transfer Protocol Secure),是以安全爲目標的 HTTP 通道,在HTTP的基礎上通過傳輸加密和身份認證保證了傳輸過程的安全性。 HTTPS 在HTTP 的基礎下加入SSL,HTTPS 的安全基礎是 SSL,因此加密的詳細內容就需要 SSL。
https://ps5.mediatagtw.com/article/krugernationalpark: 主要作用
關於 HTTP的明文數據傳輸, 攻擊者最常用的攻擊手法就是網絡嗅探, 試圖從傳輸過程當中分析出敏感的數據, 例如管理員對 Web 程序後臺的登錄過程等等, 從而獲取網站管理權限, 進而滲透到整個服務器的權限。 即使無法獲取到後臺登錄信息, 攻擊者也可以從網絡中獲取普通用戶的隱祕信息, 包括手機號碼, 身份證號碼, 信用卡號等重要資料, 導致嚴重的安全事故。 進行網絡嗅探攻擊非常簡單, 對攻擊者的要求很低。 使用網絡發佈的任意一款抓包工具, 一個新手就有可能獲取到大型網站的用戶信息。 不過是多了一個「Secure」,究竟會讓這2種傳輸協定產生怎麼樣的差異呢? 這就得從早期網路的使用目的來看,網際網路在初期的使用目的僅為一個部門內的資料傳輸,因此HTTP作為較早期的傳輸協定,為了求資料傳輸的快速,自然就會省略「加密與解密」的步驟,讓資料以明文傳輸。
HTTPS 存在不同於 HTTP 的默認端口及一個加密/身份驗證層(在 HTTP與 TCP 之間)。 它被廣泛用於萬維網上安全敏感的通訊,例如交易支付等方面。 圖片來自 演算法圖鑑 – 第 5 章:安全性演算法看來要安全的進行通訊,就需要其他的加密方式;例如 迪菲-赫爾曼密鑰交換,或是我們接下來要談的「公開金鑰加密」。 像是 惡意使用者偽裝成公用無線網路來釣魚,當使用者連上之後,便可以擷取封包,窺探傳輸的內容;再說,即使扣除掉這種不知名的免費無線網路,你也沒辦法確認網路連線到目標伺服器的路上,每個節點都不會窺探、側錄你所傳遞的資料。 憑證可在其過期前被吊銷,通常情況是該憑證的私鑰已經失密。
HTTP協議是爲了傳輸網頁超文本(文本、圖像、多媒體資源),以及規範客戶端和服務器端之間互相請求資源的方法的應用層協議。 在1989年最早推出了HTTP 0.9版本,而1999年公佈的HTTP 1.1是到目前(2020年)仍舊廣泛使用的版本(引自《HTTP協議幾個版本的比較》)。 超文本傳輸協定 是一種用來傳輸超媒體文件 https://ps5.mediatagtw.com/article/krugernationalpark2025 (像是 HTML 文件) 的應用層協定,被設計來讓瀏覽器和伺服器進行溝通,但也可做其他用途。 HTTP 遵循標準客戶端—伺服器模式,由客戶端連線以發送請求,然後等待接收回應。 HTTP 是一種無狀態協定,意思是伺服器不會保存任兩個請求間的任何資料 (狀態)。
要做到這樣,管理員通常會給每個使用者建立憑證(通常包含了使用者的名字和電子郵件位址)。 這個憑證會被放置在瀏覽器中,並在每次連接到伺服器時由伺服器檢查。 要使一網路伺服器準備好接受HTTPS連接,管理員必須建立一數位憑證,並交由憑證頒發機構簽章以使瀏覽器接受。 憑證頒發機構會驗證數位憑證持有人和其聲明的為同一人。
回應分為五類:資訊回應、成功回應、重定向、用戶端錯誤、以及伺服器錯誤。 HTTPS 協議的安全是有範圍的,在黑客攻擊、拒絕服務攻擊和服務器劫持等方面幾乎起不到什麼作用。 (3)身份校驗安全性:保證數據到達用戶期望的目的地。 https://ps5.mediatagtw.com/article/krugernationalpark 就像我們郵寄包裹時,雖然是一個封裝好的未掉包的包裹,但必須確定這個包裹不會送錯地方,通過身份校驗來確保送對了地方。 HTTPS報文中的任何東西都被加密,包括所有報頭和荷載。 除了可能的選擇密文攻擊(參見侷限小節)之外,一個攻擊者所能知道的只有在兩者之間有一連接這一事實。
https://ps5.mediatagtw.com/article/krugernationalpark: 主要作用
因此攻擊者可以輕易的發動中間人攻擊, 修改客戶端和服務端傳輸的數據, 甚至在傳輸數據中插入惡意代碼, 導致客戶端被引導至惡意網站被植入木馬。 今天從加密的方式出發,考慮每種加密通訊過程中可能受到的攻擊,逐步演變成現今最普遍的加密方式,並藉此來說明 HTTP 與 HTTPS 之間的差異,希望能幫助讀者您理解網路通訊中最基礎的安全知識。 當通訊開始時,Alice 會先傳遞數位憑證給 Bob,而 Bob 便可以透過數位簽章,來證明憑證的內容確實是屬於 Alice 的;如此一來,證明公鑰是屬於誰的問題就被解決了,即使竊聽者想要從中竊聽,也因為憑證頒發機構的數位簽章,竊聽者將無從介入通訊過程。 因此就出現了 憑證頒發機構,例如 Alice 和 Bob 要準備進行通訊;在開始之前,Alice 必須先提供公鑰 & Email,向憑證頒發機構申請憑證,憑證頒發機構核可後,便會透過 數位簽章 包裹 Alice 提供的資料,製作成 數位憑證。
終端數位憑證由中介機構簽發、中介機構的憑證由更上游的中介機構簽發,直到源頭,它的憑證由自己簽發,這樣就形成了一個 信任鏈。 很遺憾的,還是沒辦法;因為通訊的雙方,雖然看得到對方的公鑰,但沒辦法證明這個公鑰是通訊的對方所擁有。 網景在1994年建立了HTTPS,並應用在網景領航員瀏覽器中。 最初,HTTPS是與SSL一起使用的;在SSL逐漸演變到TLS時,HTTPS也由在2000年五月公佈的RFC 2818正式確定下來。