HTTP是什么:
首先,我們知道HTTP的全名是超文本傳輸協(xié)議,主要是用來(lái)供客戶(hù)端(一般為瀏覽器)與服務(wù)器之間傳遞WEB數(shù)據(jù)的一種應(yīng)用層協(xié)議。
而原始的HTTP協(xié)議只規(guī)定了傳輸數(shù)據(jù)包的格式以及互相之間協(xié)商好的字段,這些格式和字段是客戶(hù)端與服務(wù)器都能理解的內(nèi)容。
但是HTTP協(xié)議的整個(gè)應(yīng)用層數(shù)據(jù)包(TCP報(bào)文的payload),所有的內(nèi)容都是明文的。
也就是說(shuō),當(dāng)我們從傳輸路徑中某個(gè)位置使用抓包工具或其他手段截取到這個(gè)數(shù)據(jù)包,就能輕松的獲取其中的請(qǐng)求和響應(yīng)內(nèi)容。
舉個(gè)例子:
A和B用一種語(yǔ)言對(duì)話(huà)(例如中文),當(dāng)黑客C使用手段截取的A和B的談話(huà)內(nèi)容,他只需要自己會(huì)中文或找個(gè)會(huì)中文的人進(jìn)行翻譯就知道A和B的談話(huà)內(nèi)容了。
HTTPS是什么:
我們了解了HTTP大概的工作原理,就知道HTTP僅僅實(shí)現(xiàn)了一種數(shù)據(jù)通訊的協(xié)議,但是是并不安全的。
而如何讓客戶(hù)端和服務(wù)器之間的數(shù)據(jù)交換變得安全,那么就需要有以下兩個(gè)措施:
1.傳輸?shù)臄?shù)據(jù)內(nèi)容是加密的而非明文的
2.瀏覽器在訪問(wèn)服務(wù)器的時(shí)候,能夠驗(yàn)證服務(wù)器的身份(即我當(dāng)前訪問(wèn)的服務(wù)器就是我想要訪問(wèn)的服務(wù)器,而非假冒的),避免中間人攻擊(黑客在中間假冒客戶(hù)端和服務(wù)器,兩邊進(jìn)行欺騙)
當(dāng)解決了以上兩個(gè)問(wèn)題,那么HTTP就變成了一個(gè)安全的傳輸協(xié)議,即我們要學(xué)習(xí)的HTTPS協(xié)議。
舉個(gè)例子:
A找到B的時(shí)候,要求B出示一個(gè)證明身份的證件(例如身份證),確認(rèn)了B的身份后。采用一種黑客無(wú)法截取的方式(具體方式在后面詳細(xì)解釋?zhuān)┥套h了一個(gè)密碼本,用來(lái)加密要交流的內(nèi)容。這時(shí)A和B的交流內(nèi)容都通過(guò)密碼本加密,C截取到也無(wú)法解密。
HTTP和HTTPS的區(qū)別:
HTTP是不安全的,傳輸內(nèi)容是明文的,不能確定服務(wù)器的真實(shí)身份
HTTPS是安全的,傳輸內(nèi)容是加密的,可以確定服務(wù)器的身份