首頁(yè)技術(shù)文章正文

HTTP和HTTPS的區(qū)別

更新時(shí)間:2018-07-24 來(lái)源:黑馬程序員 瀏覽量:

        在web開發(fā)學(xué)習(xí)中,我們會(huì)很頻繁的接觸到HTTP這個(gè)協(xié)議。從概念上來(lái)說(shuō),超文本傳輸協(xié)議(HTTP,HyperText Transfer Protocol)是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議。所有的WWW文件都必須遵守這個(gè)標(biāo)準(zhǔn)。通俗來(lái)講,HTTP就是瀏覽器和服務(wù)器進(jìn)行交互數(shù)據(jù)時(shí),雙方都要遵守的數(shù)據(jù)格式規(guī)范。

        舉個(gè)例子:

        兩個(gè)人寫信,需要都遵守一些規(guī)則才能互相看懂對(duì)方的意思——開頭是對(duì)方稱呼,結(jié)尾是自己的落款,否則數(shù)據(jù)格式就亂套了,寫的信誰(shuí)也看不懂寫的是什么。

        而HTTPS又是什么呢,其實(shí)HTTPS就是在HTTP的基礎(chǔ)上加了個(gè)S,也就是“Secure”,即安全。我們知道,HTTP協(xié)議本身是沒(méi)有任何安全考慮的,數(shù)據(jù)以明文傳輸,GET方式傳遞的參數(shù)甚至直接就在地址欄上顯示出來(lái),即使使用其他方式傳參,也能很輕易的就把數(shù)據(jù)抓包獲取到,讓一些心懷不軌的人所利用,甚至偽造請(qǐng)求發(fā)送一些假數(shù)據(jù),所以HTTP的年代,大家都在自己想辦法解決數(shù)據(jù)安全問(wèn)題,自己加密或者添加校驗(yàn)等,而HTTPS就是用來(lái)從根本上解決這個(gè)問(wèn)題的。那么今天我們主要聊一聊 HTTPS 到底安全在哪。

 

1532423666643_51.png

        從上圖可以看到,HTTPS 就是在 HTTP 下加入了 SSL 層,從而保護(hù)了交換數(shù)據(jù)隱私和完整性,提供對(duì)網(wǎng)站服務(wù)器身份認(rèn)證的功能,所以簡(jiǎn)單來(lái)說(shuō)它就是安全版的 HTTP。

        SSL(Secure Sockets Layer 安全套接層),及其繼任者傳輸層安全(Transport Layer Security,TLS)是為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議。TLS與SSL在傳輸層對(duì)網(wǎng)絡(luò)連接進(jìn)行加密?,F(xiàn)在隨著技術(shù)的發(fā)展,TLS 得到了廣泛的應(yīng)用,關(guān)于 SSL 與 TLS 的差別,我們不用在意,只要知道 TLS 是 SSL 的升級(jí)版本就好。

        一般來(lái)說(shuō),HTTPS 主要用途有三個(gè):

                    一是通過(guò)證書等信息確認(rèn)網(wǎng)站的真實(shí)性;

                    二是建立加密的信息通道;

                    三是數(shù)據(jù)內(nèi)容的完整性。

1532423673722_52.jpg  

        上圖就是一個(gè)HTTPS的鏈接打開后的樣子,我們可以通過(guò)點(diǎn)擊瀏覽器地址欄鎖標(biāo)志來(lái)查看網(wǎng)站認(rèn)證之后的真實(shí)信息,SSL證書保證了網(wǎng)站的唯一性與真實(shí)性。

        那么加密的信息通道又加密了哪些信息呢?

        簽發(fā)證書的 CA 中心會(huì)發(fā)布一種權(quán)威性的電子文檔——數(shù)字證書,它可以通過(guò)加密技術(shù)(對(duì)稱加密與非對(duì)稱加密)對(duì)我們?cè)诰W(wǎng)上傳輸?shù)男畔⑦M(jìn)行加密,比如我在 網(wǎng)站 上輸入:

                賬號(hào):cbssfaw

                密碼:123djaosid

        可是這個(gè)數(shù)據(jù)被黑客攔截盜竊了,那么加密后,黑客得到的數(shù)據(jù)可能就是這樣的:

                賬號(hào):)》﹝'!#﹡﹡

                密碼:$﹩ˉ﹔〈〉"“

        最后一個(gè)就是驗(yàn)證數(shù)據(jù)的完整性,當(dāng)數(shù)據(jù)包經(jīng)過(guò)無(wú)數(shù)次路由器轉(zhuǎn)發(fā)后會(huì)發(fā)生數(shù)據(jù)劫持,黑客將數(shù)據(jù)劫持后進(jìn)行篡改,比如植入木馬。開啟HTTPS后黑客就無(wú)法對(duì)數(shù)據(jù)進(jìn)行篡改,就算真的被篡改了,我們也可以檢測(cè)出問(wèn)題。

        而加密方式分為對(duì)稱加密和非對(duì)稱加密兩種。

        對(duì)稱加密是指加密與解密的使用同一個(gè)密鑰的加密算法。目前常見的加密算法有:DES、AES、IDEA 等。

        非對(duì)稱加密使用的是兩個(gè)密鑰,公鑰與私鑰,我們會(huì)使用公鑰對(duì)網(wǎng)站賬號(hào)密碼等數(shù)據(jù)進(jìn)行加密,再用私鑰對(duì)數(shù)據(jù)進(jìn)行解密。這個(gè)公鑰會(huì)發(fā)給查看網(wǎng)站的所有人,而私鑰是只有網(wǎng)站服務(wù)器自己擁有的。目前常見非對(duì)稱加密算法:RSA,DSA,DH等。        簡(jiǎn)單的總結(jié)一下:

                 HTTPS和HTTP的區(qū)別主要為以下四點(diǎn):

                     一、https協(xié)議需要到ca申請(qǐng)證書,一般免費(fèi)證書很少,需要交費(fèi)。所以現(xiàn)在雖然都在提倡使用HTTPS而淘汰掉HTTP,但是還是有大量的網(wǎng)站由于成本問(wèn)題,或者數(shù)據(jù)傳輸不是那么敏感,所以依舊使用HTTP作為傳輸協(xié)議。

                     二、http是超文本傳輸協(xié)議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協(xié)議。

                     三、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。這個(gè)在我們服務(wù)器端編程的時(shí)候比較重要,因?yàn)槲覀兞?xí)慣把默認(rèn)端口設(shè)置為80來(lái)監(jiān)聽HTTP很久了,所以如果使用了HTTPS的話,要扭轉(zhuǎn)一下觀念,不要習(xí)慣性的使用80端口了。

                     四、http的連接很簡(jiǎn)單,是無(wú)狀態(tài)的;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比http協(xié)議安全。

 

        通過(guò)上文,我們已經(jīng)知道,HTTPS 就是在 HTTP 傳輸協(xié)議的基礎(chǔ)上對(duì)網(wǎng)站進(jìn)行認(rèn)證,給予它獨(dú)一無(wú)二的身份證明,再對(duì)網(wǎng)站數(shù)據(jù)進(jìn)行加密,并對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行完整性驗(yàn)證。HTTPS 作為一種加密手段不僅加密了數(shù)據(jù),還給了網(wǎng)站一張身份證。 總之,HTTPS從各個(gè)角度去考慮了怎么讓數(shù)據(jù)傳輸更安全的問(wèn)題,這個(gè)“S”添加的當(dāng)之無(wú)愧?,F(xiàn)在,大家對(duì)HTTPS和HTTP的區(qū)別有了明確的認(rèn)識(shí)了吧。


 

作者:黑馬程序員前端與移動(dòng)開發(fā)培訓(xùn)學(xué)院

首發(fā):http://web.itheima.com/

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!