《圖解HTTP》第八章讀書筆記
第八章:確認訪問用戶身份的認證
1.HTTP/1.1使用的四種驗證方式:
①BASIC認證(不常用)
②DIGEST認證(不常用)
③SSL客戶端認證
④FormBase認證(基於表單認證,就是平常用的賬戶密碼登錄)
2.BASIC認證:就是把客戶端的用戶ID和密碼經Base64編碼後發送給服務器端,以此達到認證客戶端身份。(這是明文發送,密碼會被竊取。)
3.DIGEST認證:服務器端發送一個質詢碼nonce(就是一個隨機數),客戶端根據這個nonce,經過MD5運算後產生一個密碼字符串response(響應碼),然後把nonce和response一個發回去給服務器端,服務器端認證身份。(能防止密碼被竊聽,但是不能防止用戶偽裝)
4.SSL客戶端認證:SSL客戶端認證借由HTTPS的客戶端證書完成認證。(SSL客戶端認證是認證這一臺特定的電腦,不能認證是不是用戶本人)
①要將客戶端證書分發給客戶端,並且客戶端必須安裝此證書。
②服務器端會要求客戶端提供自己的證書。
③服務器端驗證客戶端證書後,會取得證書內的公開秘鑰(客戶端的公開秘鑰,服務器端用此加密,客戶端用私有秘鑰解密密文),然後開始HTTPS通信。
5.FormBase認證:就是平常用的賬戶密碼登錄,用來認證是不是用戶本人。
6.因為HTTP是無狀態協議,所以我們用Cookie來管理Session。意思就是:
①客戶端利用FormBase認證(就是發送賬戶密碼給服務器端)。
②服務器端根據這個賬戶發放一個Session ID(這個Session ID就是一個Session的編號,也就是記錄了這個用戶和這個用戶所處的狀態),這個Session ID寫在響應報文的Set-Cookie首部字段內。
③客戶端收到這個Session ID後,保存在Cookie內,下次發請求報文的時候帶上這個Cookie。
④服務器端收到這個Cookie後(也就是收到這個Session ID),就可以識別這個用戶和他上次連接服務器所處的狀態。
7.如果Session ID被盜,對方就可以偽裝成你的身份進行操作,所以Session ID存在一個有效期。
《圖解HTTP》第八章讀書筆記