天天看點

第8章 确認通路使用者身份的驗證

HTTP使用的認證方式

-

BASIC

認證(基本認證)

-

DIGEST

認證 (摘要認證)

-

SSL

用戶端認證

-

FormBase

認證 (基于表單認證)

BASIC

認證

基本認證是從

HTTP/1.0

就存在的認證方式

1、當請求的資源需要進行

BASIC

認證時,服務端會随401狀态碼傳回帶

WWW-Authenticate

頭部字段的封包。該頭部字段内含認證方式(

BASIC

)和Request-uri安全域字元串(

realm

2、用戶端為了通過

BASIC

認證需要将使用者賬号密碼發送到伺服器。以 (賬号:密碼)的形式經過BASE6編碼寫入

Authorization

字段發送請求。

3、服務端驗證通過則傳回200狀态碼及請求的資源,若失敗則繼續傳回401。

  • BASIC

    認證雖然将賬号密碼經過

    BASE64

    編碼但是沒有任何加密,一旦被竊聽風險極高。
  • 一般浏覽器無法執行登出操作。

DIGEST

認證

1、用戶端請求。

2、服務端傳回401狀态碼、

WWW-Authenticate

字段中包含realm(認證方式),nonce(随機數)。

3、用戶端根據質詢碼計算出響應碼(response)。用戶端發出的資訊如下:

  • realm:服務端傳回的質詢碼中的。
  • nonce:服務端傳回的質詢碼中的。
  • username: realm限定範圍内可進行認證的使用者編号。ID
  • uri:通路的資源。
  • response:由質詢碼計算出的用于登陸的響應。

4、服務端認證通過傳回用戶端請求的資源,若失敗則傳回401。

SSL

認證

1、SSL認證過程。

第8章 确認通路使用者身份的驗證
  • 用戶端發送請求。
  • 服務端将公鑰發送給用戶端
  • 用戶端驗證證書,符合要求則将自己的公鑰發送給服務端
  • 服務端驗證證書,若符合要求則開始HTTP加密通信。

2、SSL用戶端采用雙因素認證

雙因素不僅需要賬号密碼,還需要申請認證者其他認證資訊。
  • 證書
  • 表單

3、SSL用戶端證書需要一定費用

FormBase

認證(表單認證 )

Session

管理及

Cookie

應用

  • 用戶端把使用者名密碼等登陸資訊發送至伺服器。
  • 服務端會發放用以識别使用者資訊的

    Session ID

    。通過驗證從用戶端發來的登陸資訊進行使用者驗證,将

    Session ID

    在服務端與使用者認證狀态一起儲存起來。是以

    Session ID

    會是認證憑證,如果

    Session ID

    被盜走,那麼就可以僞裝成你的身份。
    • Session ID應用難以揣測的字元串,服務端也應該将

      Session ID

      設定安全期限
    • 為了減少跨站腳本攻擊(

      xss

      )帶來的危害,應在

      Cookie

      字段内加入

      httponly

      屬性。
  • 用戶端接收到服務端傳回的

    Session ID

    之後将之緩存在本地,下次請求時浏覽器會自動發送

    Cookie

    ,是以

    Session ID

    也會被自動發送