HTTP協(xié)議的缺點
通信使用明文(不加密)內(nèi)容可能會被竊聽
通信內(nèi)容一般要經(jīng)過多次轉(zhuǎn)發(fā)才能到達接收端涎劈。在這個通信過程中分扎,在各個階段通信內(nèi)容都有可能被窺探猖闪。即使通信內(nèi)容進行過加密,但是加密后的報文還是會被竊聽锌奴。而且兽狭,如果內(nèi)容要到達接收端,密鑰也會需要傳輸?shù)浇邮辗铰故瘢趥鬟f過程中,密鑰還是有可能被獲取服球。不驗證通信方身份茴恰,可能遭遇偽裝
HTTP協(xié)議通信時,由于不存在確認通信方的處理步驟斩熊,任何人都可以發(fā)起請求往枣。服務器只要接到請求也都會響應。所以請求方和服務器都可以偽裝粉渠。
無法確定正在通信的雙方是否具備訪問權(quán)限
即使是無意義的請求也會照單全收分冈,無法阻止海量請求下的DoS攻擊(Denial of Service拒絕服務攻擊)無法驗證報文的完整性,可能遭遇篡改
所謂報文的完整性霸株,指的是信息的準確度雕沉。因為信息在傳遞的途中可能被篡改,而服務器沒法知道是否被修改去件。
由于HTTP協(xié)議存在以上各種缺點坡椒,所以為了有效防止這些弊端,就有必要使用HTTPS了
所謂HTTPS
HTTPS=HTTP+加密+認證+完整性保護
看吧尤溜,上面這個公式倔叼,正好可以對應解決HTTP的弊端
-----下面依次來解釋以上公式-----
- HTTP
HTTPS并非新的應用層協(xié)議,而是HTTP通信接口部分用SSL(Secure Socket Layer)和TLS(Transport Layer Security)協(xié)議代替宫莱。用HTTP的時候丈攒,HTTP直接和TCP通信,用SSL的時候,HTTP就會先和SSL通信巡验,然后SSL再和TCP通信际插。簡而言之,HTTPS就是套了SSL協(xié)議外殼的HTTP
加密
HTTP加密傳輸一般使用 <u>共享密鑰加密</u>深碱,這是一種<u>對稱加密方法</u>也就是說腹鹉,發(fā)送方和接收方使用同一套密鑰。這樣存在的問題是敷硅,密鑰在傳輸過程中可能被竊取功咒。
HTTPS采用的是<u>公開密鑰加密</u>的處理方式。這是一種 <u>不對稱的加密方式</u>绞蹦,就是說力奋,發(fā)送方用對方的公開密鑰加密,當信息傳遞到對方的時候幽七,對方用自己的私有密鑰解密景殷,這樣就不涉及傳輸密鑰的安全問題。公開密鑰可以隨意傳輸澡屡,私有密鑰只有自己知道猿挚。棒棒的~認證
HTTP協(xié)議無法確定通信方,但是SSL可以驶鹉。它擁有一種叫做證書的手段绩蜻,可用于確定方。另外偽造證書想當困難室埋,所以只要能夠確定通信方持有證書办绝,就可以判斷通信方的真正意圖。
證書由值得信賴的第三方機構(gòu)頒發(fā)姚淆,用以證明服務器端和客戶端是真實存在的孕蝉。完整性保護
應用層在發(fā)送數(shù)據(jù)時,會附加一種叫做MAC(Message Authentication Code)的報文摘要腌逢。MAC能夠查知報文是否遭到篡改降淮,從而保護報文的完整性。
SSL是獨立于HTTP的協(xié)議上忍,所以不光是HTTP協(xié)議骤肛,其他運行在應用層的SMTP和Telnet等協(xié)議均可配合SSL協(xié)議使用∏侠叮可以說SSL是當今世界上應用最為廣泛的網(wǎng)絡安全技術(shù)腋颠。
HTTPS也有一些問題
當HTTP使用SSL的時候,處理速度會變慢吓笙,一般HTTPS 比HTTP慢2到100倍淑玫。
一是因為多了HTTP和SSL及TCP的通信
二是因為HTTPS要處理客戶端和服務器之間的加密解密,完整性,證書認證等驗證絮蒿。這也將消耗CPU和內(nèi)存等硬件資源
<u>由此看來在一些情況下不用HTTPS的原因也是顯而易見了:</u>
因為HTTPS的處理速度會變慢尊搬,因為對硬件的消耗,對訪問量很大的web網(wǎng)站而言土涝,其承擔的負載不容小覷佛寿。除此之外,節(jié)約購買數(shù)字證書的成本也是原因之一但壮。
所以冀泻,一般非敏感性信息還是會用http通信,敏感性的信息才會用https通信蜡饵。
針對SSL速度慢的情況弹渔,沒有根本的解決方案,一般會使用SSL加速器這種(專用服務器)硬件來改善問題溯祸。
本文整理自《圖解HTTP》和網(wǎng)絡肢专,之后將持續(xù)進行完善
圖解HTTP系列:
圖解HTTP--HTTP狀態(tài)碼
圖解HTTP--TCP/IP
圖解HTTP--與HTTP協(xié)作的web服務器