HTTP使用的認證方式
-
BASIC
認證(基本認證)
-
DIGEST
認證 (摘要認證)
-
SSL
用戶端認證
-
認證 (基于表單認證)
FormBase
BASIC
認證
BASIC
基本認證是從 HTTP/1.0
就存在的認證方式
1、當請求的資源需要進行
BASIC
認證時,服務端會随401狀态碼傳回帶
WWW-Authenticate
頭部字段的封包。該頭部字段内含認證方式(
BASIC
)和Request-uri安全域字元串(
realm
)
2、用戶端為了通過
BASIC
認證需要将使用者賬号密碼發送到伺服器。以 (賬号:密碼)的形式經過BASE6編碼寫入
Authorization
字段發送請求。
3、服務端驗證通過則傳回200狀态碼及請求的資源,若失敗則繼續傳回401。
-
認證雖然将賬号密碼經過BASIC
編碼但是沒有任何加密,一旦被竊聽風險極高。BASE64
- 一般浏覽器無法執行登出操作。
DIGEST
認證
DIGEST
1、用戶端請求。
2、服務端傳回401狀态碼、
WWW-Authenticate
字段中包含realm(認證方式),nonce(随機數)。
3、用戶端根據質詢碼計算出響應碼(response)。用戶端發出的資訊如下:
- realm:服務端傳回的質詢碼中的。
- nonce:服務端傳回的質詢碼中的。
- username: realm限定範圍内可進行認證的使用者編号。ID
- uri:通路的資源。
- response:由質詢碼計算出的用于登陸的響應。
4、服務端認證通過傳回用戶端請求的資源,若失敗則傳回401。
SSL
認證
SSL
1、SSL認證過程。
- 用戶端發送請求。
- 服務端将公鑰發送給用戶端
- 用戶端驗證證書,符合要求則将自己的公鑰發送給服務端
- 服務端驗證證書,若符合要求則開始HTTP加密通信。
2、SSL用戶端采用雙因素認證
雙因素不僅需要賬号密碼,還需要申請認證者其他認證資訊。
- 證書
- 表單
3、SSL用戶端證書需要一定費用
FormBase
認證(表單認證 )
FormBase
Session
管理及
Cookie
應用
- 用戶端把使用者名密碼等登陸資訊發送至伺服器。
- 服務端會發放用以識别使用者資訊的
。通過驗證從用戶端發來的登陸資訊進行使用者驗證,将Session ID
在服務端與使用者認證狀态一起儲存起來。是以Session ID
會是認證憑證,如果Session ID
被盜走,那麼就可以僞裝成你的身份。Session ID
- Session ID應用難以揣測的字元串,服務端也應該将
設定安全期限Session ID
- 為了減少跨站腳本攻擊(
)帶來的危害,應在xss
字段内加入Cookie
屬性。httponly
- Session ID應用難以揣測的字元串,服務端也應該将
- 用戶端接收到服務端傳回的
之後将之緩存在本地,下次請求時浏覽器會自動發送Session ID
,是以Cookie
也會被自動發送Session ID