Web會話之我見

2022-07-11 23:51:11 字數 1373 閱讀 5312

會話就是用來儲存特定使用者在端側和服務側互動時所需的屬性和配置資訊的物件。會話的英文名叫做session。

http是無狀態的,客戶端訪問伺服器時,伺服器是不知道這個請求是否來自於同乙個客戶端。這樣就會來帶另乙個問題,每當客戶端發起乙個請求的時候,都需要帶著所有的屬性和配置資訊(比如登入資訊、授權資訊等)。這樣客戶端用起來就太麻煩了。因此,作為人機互動,服務端是希望能區別出不同使用者的不同請求的。對於同乙個使用者的請求,不需要每次都把所有資訊帶在請求裡。因此,需要伺服器和客戶端之間有乙個憑證,根據這個憑證,伺服器可以區別出來每個http請求分別來自哪個使用者。這樣,就有了session。

會話的生命週期體現在如下四個階段:

會話生成:客戶端通過服務端認證以後,服務端給客戶端建立乙個會話物件,來儲存客戶端的資訊。同時,服務端會建立乙個隨機的會話標識 ,來表示唯一的乙個客戶端。

會話維持: 在會話生成後,服務端使用會話標識來維護客戶端和服務端會話物件之間的關係。

會話認證: 客戶端發起請求時,需要攜帶會話標識。服務端會根據會話標識來判斷會話是否已經通過認證,並且客戶端是否有許可權操作。

會話銷毀:客戶端主動斷開連線或者客戶端長時間無活動的情況下,服務端完成刪除會話物件,釋放會話標識等清理動作。

會話被竊取:會話標識洩露後,在另乙個客戶端登入,但是服務端不知道

解決方法:

a. 禁止同乙個使用者同時建立多個會話

b. 利用策略來限制可被認證的使用者客戶端ip、時間段等

會話標識被破解:黑客通過反覆嘗試,獲取正確的會話標識,但是伺服器不知道

解決方法:

a. 限制會話標識長度,業界當前認為不少於24 bytes為安全長度

b. 會話標識採用安全隨機數演算法生成

c. 會話標識命名不帶有其他特殊意義,避免暴露額外資訊

會話被劫持: 黑客通過攔截網路請求,獲取正確的會話標識,但是伺服器不知道

解決方法:

a. 會話標識在認證通過後,進行變更,避免會話固定後被劫持訪問

b. 會話標識採用安全通道傳輸,比如https, ipsec, ssl通道等

c. 會話標識設定很短的有效期,甚至使用一次後立即失效

d. 會話標識不應該放在url或者隱藏域中,應該放在cookie中,並設定httponly、secure、samesite等屬性

e. 會話標識在cookie中持久化儲存時,需要安全加密

web會話總結

總結 cookie的特點 1.伺服器可以向客戶端寫內容 2.只能寫文字內容 4.客戶端可以阻止伺服器cookie的寫入 6.乙個jsp servlet設定的cookie可以被同一路徑或子路徑的jsp servlet訪問得到 session 1 session存在服務端 當用瀏覽器訪問伺服器的乙個請求...

WEB會話跟蹤

一 什麼叫會話跟蹤 記錄使用者一段時間內的邏輯上相關聯的不同訪問請求個過程叫 會話跟蹤 通過使用者在每次對服務請求時的唯一標識,可以跟蹤會話。二 會話跟蹤產生的原因 我們都知道internet通訊協議可以分為有狀態協議和無狀態協議,而我們在www上進行的訪問http協議是乙個無狀態協議,這種協議無法...

Web會話管理

基於token的管理 重新整理安全問題 web應用通常使用的是http請求,但是http是無狀態的,一次請求結束,連線就會自動斷開,伺服器只能知道每個請求的 位址,可是這對會話的管理毫無意義。根本無法對使用者進行認證和許可權控制。於是,就有了相應的方案來解決這問題。常用的方法有三個 在早期的web應...