圖解HTTP(3) 安全

CopperDong發表於2018-07-01

七、確保Web安全的HTTPS

      HTTP主要有這些不足:

  • 通訊使用明文(不加密),內容可能會被竊聽
  • 不驗證通訊方的身份,因此有可能遭遇偽裝
  • 無法證明報文的完整性,所以有可能已遭篡改

    通訊的加密:和SSL組合使用的HTTP被稱為HTTPS


    內容的加密:客戶端和服務端需要加密和解密

    如何防止篡改:常用的是MD5和SHA-1等雜湊值校驗的方法,以及用來確認檔案的數字簽名方法。

    HTTPS = HTTP + 加密 + 認證 + 完整性保護

    經常會在Web的登入頁面和購物結算介面等使用HTTPS通訊

八、確認訪問使用者身份的認證

     何為認證:客戶端需要自報家門,HTTP/1.1使用的認證方式如下:

     BASIC認證(基本認證):不常用

     DIGEST認證(摘要認證):不怎麼用

     SSL客戶端認證:雖具有高度的安全等級,但需要費用,尚未普及

     FormBase認證(基於表單認證):客戶端傳送登入資訊



    基於表單認證:一般會使用Cookie來管理Seesion


步驟1:客戶端把使用者ID和密碼等登入資訊放入報文的實體部分,通常是以POST方法把請求傳送給伺服器。而這時,會使用HTTPS通訊來進行HTML表單畫面的顯示和使用者輸入資料的傳送。

步驟2:伺服器會發放用以識別使用者的Session ID。通過驗證從客戶端傳送過來的登入資訊進行身份認證,然後把使用者的認證狀態與Session ID繫結後記錄在伺服器端。向客戶端返回響應時,會在首部欄位Set-Cookie內寫入Session ID(如PHPSESSID=028a8c...)。你可以把Session ID想象成一種用以區分不同使用者的等位號。然而,如果Session ID被第三方盜走,對方就可以偽裝成你的身份進行惡意操作了。因此必須防止Session ID被盜,或被猜出。為了做到這點,Session ID應使用難以推測的字串,且伺服器端也需要進行有效期的管理,保證其安全性。另外,為減輕跨站指令碼攻擊(XSS)造成的損失,建議事先在Cookie內加上httponly屬性。

步驟3:客戶端接收到從伺服器端發來的Session ID後,會將其作為Cookie儲存在本地。下次向伺服器傳送請求時,瀏覽器會自動傳送Cookie,所以Session ID也隨之傳送到伺服器。伺服器端可通過驗證接收到的Session ID識別使用者和其認證狀態。

    通常對密碼加鹽(salt)的方式增加額外資訊,再使用雜湊(hash)函式計算出雜湊值後儲存。


相關文章