一.http為什么是不安全的娄涩?
????????在我們的手機(jī)或者電腦進(jìn)行http請求的時候,實際上是應(yīng)用程序映跟,比如瀏覽器或者手機(jī)軟件蓄拣,它把一個http請求報文發(fā)送給了服務(wù)器,服務(wù)器接收到請求之后去處理努隙,處理之后再返回一個響應(yīng)報文球恤,這樣一個請求就結(jié)束了。
? ? ? ? 但是 這個請求是怎么到達(dá)服務(wù)器的呢荸镊?在實際的網(wǎng)絡(luò)中咽斧,每個消息都會經(jīng)過很多個中間節(jié)點滚澜,比如路由器凤跑,網(wǎng)關(guān)编矾,這些節(jié)點會以接力的形式芦鳍,一步一步的轉(zhuǎn)發(fā)這些消息玫恳,一步一步的讓消息達(dá)到目標(biāo)服務(wù)器豹绪,最終服務(wù)器接收到消息并且進(jìn)行處理业栅。
? ? ? ? 那么這些中間節(jié)點的轉(zhuǎn)發(fā)者是怎么轉(zhuǎn)發(fā)這些消息的呢簿寂?就是一個節(jié)點一個節(jié)點的轉(zhuǎn)發(fā)钦椭,下一個節(jié)點在原封不動的轉(zhuǎn)發(fā)給下下個節(jié)點拧额,但是如果其中的一個節(jié)點是一個壞人碑诉,他把消息篡改了之后再轉(zhuǎn)發(fā)出去,那就會產(chǎn)生問題了侥锦。
? ? ? ? 比如說进栽,要轉(zhuǎn)賬給我大爺,但是中間的壞人將消息篡改了恭垦,將轉(zhuǎn)賬地址改成了自己的地址快毛,那么錢就跑到了壞人的兜里了。另外不止是篡改番挺,單純的竊聽唠帝,對于我們來說也是一種風(fēng)險。比如玄柏,我的賬號和密碼在向服務(wù)器發(fā)送的時候襟衰,路過的每一個節(jié)點都能看到賬號和密碼,這是不是很危險粪摘?而且不止是中間節(jié)點瀑晒,網(wǎng)絡(luò)上的其他節(jié)點也是可以對消息進(jìn)行竊聽的,所以網(wǎng)絡(luò)從本質(zhì)上就不可避免的會讓別人看到你發(fā)送和接收的消息徘意,這是http不安全的原因之一苔悦。但是從這個角度解決問題是不現(xiàn)實的,我們總不能把網(wǎng)絡(luò)結(jié)構(gòu)修改了吧椎咧,那么就要說到http不安全的另外一個原因:明文傳輸玖详,所謂明文傳輸就是把你的消息內(nèi)容不做任何加工直接傳輸,與之對應(yīng)的有一個概念叫做加密邑退,https就是通過加密讓消息變的安全。
二.https為什么是安全的劳澄?
? ? ? ? https把http消息進(jìn)行加密之后再傳送地技,這樣就算壞人攔截到了,得到消息之后也看不懂秒拔,這樣就做到了安全莫矗,具體來說,https是通過對稱加密和非對稱加密和hash算法共同作用砂缩,來在性能和安全性上達(dá)到一個平衡作谚,加密是會影響性能的,尤其是非對稱加密庵芭,因為它的算法比較復(fù)雜妹懒,那么加密了就安全了嗎?不是的双吆,https除了對消息進(jìn)行了加密以外還會對通信的對象進(jìn)行身份驗證眨唬。
? ? ? ? https并不是一種新的協(xié)議会前,而是使用了一種叫做TLS(Transport layer secure)的安全層,這個安全層提供了數(shù)據(jù)加密的支持匾竿,讓http消息運行在這個安全層上瓦宜,就達(dá)到了安全,而運行在這個安全層上的http就叫做https(http secure)