文章目錄
- HTTP狀态碼
-
- 簡介
- 2XX 成功
- 3XX 重定向
- 4XX用戶端錯誤
- 5XX伺服器錯誤
- HTTP和HTTPS
-
- HTTP的缺點
-
- 通信使用明文可能會被竊聽
- 不驗證通信方的身份就可能遭遇僞裝
- 無法證明封包完整性,可能已遭篡改
- HTTP+加密+認證+完整性保護=HTTPS
-
- HTTPS是身披SSL外殼的HTTP
- 加密技術
-
- 共享密鑰加密
- 使用兩把密鑰的公開密鑰加密
- HTTPS采用混合加密機制
HTTP狀态碼
簡介
HTTP狀态碼負責表示用戶端HTTP請求的傳回結果、标記伺服器端得到處理是否正常、通知出現的錯誤等工作。狀态碼的職責是當用戶端向伺服器發送請求時,描述傳回的請求結果。
狀态碼的類别:
HTTP狀态碼的種類數量繁多,實際上經常使用的大概隻有14種。下面,我們來了解一下。
2XX 成功
2XX的響應結果表明請求被正常處理了。
- 200 OK:表示從用戶端發來的請求在伺服器端被正常處理了。
- 204 Contene:該狀态碼代表伺服器接受的請求已成功處理,但在傳回的的響應封包種不含屍體的主體部分。另外,也不允許傳回任何實體的主體。
- 206 Partial Contene:該狀态碼表示用戶端進行了範圍請求,而伺服器成功執行了這部分的GET請求。
3XX 重定向
3XX響應結果表明浏覽器需要執行某些特殊的處理以正确處理請求。
- 301 Moved Permanently:永久重定向。該狀态碼表示請求的資源已被配置設定了新的URI,以後應使用資源在所指的URI。
- 302 Found:臨時重定向。該狀态碼表示請求的資源已被配置設定了新的URI,希望使用者(本次)能使用新的URI通路。
- 303 See Other:303狀态碼與302Found狀态碼有者相同的功能,但303狀态碼明确表示用戶端應當采用GET方法擷取資源,這與302狀态碼不同。
- 304 Not Modified:表示用戶端發送附帶條件的請求時,伺服器端允許請求通路資源,但未滿足條件的情況。304雖然被劃分在3XX類别中,但是和重定向沒有關系。
- 307 Temporary Redirect:臨時重定向。
4XX用戶端錯誤
4XX的相應結果表明用戶端是發生錯誤的原因所在。
- 400 Bad Request:該狀态碼表示請求封包中存在文法錯誤。
- 401 Unauthorized:該狀态碼表示發送的請求需要有通過HTTP認證的認證資訊。另外,若之前以進行過一次請求,則表示使用者認證失敗。
- 403 Forbidden:表明對請求資源的通路被伺服器拒絕了。
- 404 Not Found:表示伺服器上無法找到請求的資源。除此之外,也可以在伺服器端拒絕請求且不想說明理由時使用。
5XX伺服器錯誤
5XX的響應結果表明伺服器本身發生錯誤。
- 500 Internal Server Error:該狀态碼表明伺服器端在執行請求時發生了錯誤。
- 503 Service Unavailable:該狀态碼表明伺服器暫時處于超負荷或正在進行停機維護,現在無法處理請求。
HTTP和HTTPS
在HTTP協定中有可能存在資訊竊聽或身份僞裝等安全問題。使用HTTPS通信機制可以有效地防止這些問題。在了解HTTPS之前我們先看看HTTP的缺點。
HTTP的缺點
通信使用明文可能會被竊聽
由于HTTP本身不具備加密的功能,是以也無法做到對通信整體(使用HTTP協定通信的請求和響應的内容)進行加密。即,HTTP封包使用明文(指未經過加密的封包)方式發送。
處理辦法:加密處理防止被竊聽。
- 通信的加密:一種方式就是将通信加密。HTTP協定中沒有加密機制,但可以通過和SSL(Secure Socket Layer,安全套接層)或TSL(Transport Layer Security,安全層傳輸協定)的組合使用,加密HTTP的通信内容。
- 内容的加密:還有一種将參與通信的内容本身加密的方式。由于HTTP協定中還沒有加密機制,那麼就對HTTP協定傳輸的内容本身加密。即把HTTP封包裡的所有内容進行加密處理。
不驗證通信方的身份就可能遭遇僞裝
HTTP協定中的請求和響應不會對通信放進行确認。也就是說存在“伺服器是否就是發送請求中URI真正指定的主機,傳回的相應是否真的傳回到實際提出請求的用戶端”等類似問題。
無法證明封包完整性,可能已遭篡改
所謂完整性是指資訊的準确度。若無法證明其完整性,通常也就意味着無法判斷資訊是否準确。
由于HTTP協定無法證明通信的封包完整性,是以,在請求或響應送出之後直到對方接收之前的這段時間,即使請求或響應的内容遭到篡改,也沒辦法獲悉。
HTTP+加密+認證+完整性保護=HTTPS
HTTP加上加密處理和認證以及完整性保護後即是HTTPS。
如果在HTTP協定通信過程中使用未經加密的明文,比如在web頁面中輸入信用卡号,若遭到竊聽,那麼就暴露了卡号。另外,對于HTTP來說,伺服器和用戶端都沒有辦法确認通信方。
為了解決上述問題,需要在HTTP上再加入加密處理和認證等機制。我們把添加了加密及認證的HTTP稱為HTTPS。
HTTPS是身披SSL外殼的HTTP
HTTPS并非是應用層的一種新協定。隻是HTTP通信接口部分用SSL和TSL協定替代而已。
通常,HTTP直接和TCP通信。當使用SSL時,則演變成先和SSL通信再由SSL和TCP通信了。簡言之,所謂HTTPS,其實就是身披SSL協定這層外殼的HTTP。在采用SSL後,HTTP就擁有了HTTPS的加密、證書和完整性保護這些功能。
加密技術
SSL采用一種叫做公開密鑰加密的加密處理方式。近代的加密方法中加密算法是公開的,而密鑰确實保密的。通過這種方式得以保持加密方法的安全性。
共享密鑰加密
加密和解密同用一個密鑰的方式稱為共享密鑰加密(Common key crypto system),也稱作對稱密鑰加密。
以共享密鑰方式加密時必須将密鑰也發給對方。可如何安全轉交呢?若在轉發密鑰時被監聽,那麼也就失去了加密的意義,并且還要設法安全的保管收到的密鑰。
使用兩把密鑰的公開密鑰加密
也就是非對稱加密,這種方式很好的解決了共享密鑰加密的困難。
使用一對非對稱的密鑰。一把叫做私有密鑰,另一把叫做公開密鑰。顧名思義,私有密鑰不能讓任何人知道,而公開密鑰則可以随意釋出,任何人都可以獲得。
使用公開密鑰加密方式,發送密文的一方使用對方的公開密鑰進行加密處理,對方收到被加密的資訊,再使用自己的私有密鑰進行解密。
HTTPS采用混合加密機制
HTTPS采用共享密鑰和公開密鑰加密兩者并用的混合加密機制。若密鑰能夠實作安全交換,那麼有可能會考慮僅使用公開密鑰加密來通信。但是公開密鑰與共享密鑰加密相比,其處理速度要慢。
是以應充分利用兩者各自的優勢,将多種方法組合起來用于通信。在交換密鑰環節使用公開密鑰加密方式,之後的建立通信交換封包階段則使用共享密鑰加密方式。