更新時間:2018-07-24 來源:黑馬程序員 瀏覽量:
在web開發學習中,我們會很頻繁的接觸到HTTP這個協議。從概念上來說,超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最為廣泛的一種網絡協議。所有的WWW文件都必須遵守這個標準。通俗來講,HTTP就是瀏覽器和服務器進行交互數據時,雙方都要遵守的數據格式規范。
舉個例子:
兩個人寫信,需要都遵守一些規則才能互相看懂對方的意思——開頭是對方稱呼,結尾是自己的落款,否則數據格式就亂套了,寫的信誰也看不懂寫的是什么。
而HTTPS又是什么呢,其實HTTPS就是在HTTP的基礎上加了個S,也就是“Secure”,即安全。我們知道,HTTP協議本身是沒有任何安全考慮的,數據以明文傳輸,GET方式傳遞的參數甚至直接就在地址欄上顯示出來,即使使用其他方式傳參,也能很輕易的就把數據抓包獲取到,讓一些心懷不軌的人所利用,甚至偽造請求發送一些假數據,所以HTTP的年代,大家都在自己想辦法解決數據安全問題,自己加密或者添加校驗等,而HTTPS就是用來從根本上解決這個問題的。那么今天我們主要聊一聊 HTTPS 到底安全在哪。
從上圖可以看到,HTTPS 就是在 HTTP 下加入了 SSL 層,從而保護了交換數據隱私和完整性,提供對網站服務器身份認證的功能,所以簡單來說它就是安全版的 HTTP。
SSL(Secure Sockets Layer 安全套接層),及其繼任者傳輸層安全(Transport Layer Security,TLS)是為網絡通信提供安全及數據完整性的一種安全協議。TLS與SSL在傳輸層對網絡連接進行加密。現在隨著技術的發展,TLS 得到了廣泛的應用,關于 SSL 與 TLS 的差別,我們不用在意,只要知道 TLS 是 SSL 的升級版本就好。
一般來說,HTTPS 主要用途有三個:
一是通過證書等信息確認網站的真實性;
二是建立加密的信息通道;
三是數據內容的完整性。
上圖就是一個HTTPS的鏈接打開后的樣子,我們可以通過點擊瀏覽器地址欄鎖標志來查看網站認證之后的真實信息,SSL證書保證了網站的唯一性與真實性。
那么加密的信息通道又加密了哪些信息呢?
簽發證書的 CA 中心會發布一種權威性的電子文檔——數字證書,它可以通過加密技術(對稱加密與非對稱加密)對我們在網上傳輸的信息進行加密,比如我在 網站 上輸入:
賬號:cbssfaw
密碼:123djaosid
可是這個數據被黑客攔截盜竊了,那么加密后,黑客得到的數據可能就是這樣的:
賬號:)》﹝'!#﹡﹡
密碼:$﹩ˉ﹔〈〉"“
最后一個就是驗證數據的完整性,當數據包經過無數次路由器轉發后會發生數據劫持,黑客將數據劫持后進行篡改,比如植入木馬。開啟HTTPS后黑客就無法對數據進行篡改,就算真的被篡改了,我們也可以檢測出問題。
而加密方式分為對稱加密和非對稱加密兩種。
對稱加密是指加密與解密的使用同一個密鑰的加密算法。目前常見的加密算法有:DES、AES、IDEA 等。
非對稱加密使用的是兩個密鑰,公鑰與私鑰,我們會使用公鑰對網站賬號密碼等數據進行加密,再用私鑰對數據進行解密。這個公鑰會發給查看網站的所有人,而私鑰是只有網站服務器自己擁有的。目前常見非對稱加密算法:RSA,DSA,DH等。 簡單的總結一下:
HTTPS和HTTP的區別主要為以下四點:
一、https協議需要到ca申請證書,一般免費證書很少,需要交費。所以現在雖然都在提倡使用HTTPS而淘汰掉HTTP,但是還是有大量的網站由于成本問題,或者數據傳輸不是那么敏感,所以依舊使用HTTP作為傳輸協議。
二、http是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。
三、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。這個在我們服務器端編程的時候比較重要,因為我們習慣把默認端口設置為80來監聽HTTP很久了,所以如果使用了HTTPS的話,要扭轉一下觀念,不要習慣性的使用80端口了。
四、http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。
通過上文,我們已經知道,HTTPS 就是在 HTTP 傳輸協議的基礎上對網站進行認證,給予它獨一無二的身份證明,再對網站數據進行加密,并對傳輸的數據進行完整性驗證。HTTPS 作為一種加密手段不僅加密了數據,還給了網站一張身份證。 總之,HTTPS從各個角度去考慮了怎么讓數據傳輸更安全的問題,這個“S”添加的當之無愧。現在,大家對HTTPS和HTTP的區別有了明確的認識了吧。