Session、Cookies、Token

一、Session

Session是什么?

Session實際上是一個特定的時間概念,Web中的Session指的就是用戶在瀏覽某個網(wǎng)站時,從進入網(wǎng)站到關(guān)閉這個網(wǎng)站所經(jīng)過的這段時間,也就是用戶瀏覽這個網(wǎng)站所花費的時間。

Session代表服務(wù)器與瀏覽器的一次會話過程,這個過程是連續(xù)的,也可以時斷時續(xù)的

Session的創(chuàng)建

當(dāng)JSP頁面沒有顯式禁止session的時候,在打開瀏覽器第一次請求該jsp的時候,服務(wù)器會自動為其創(chuàng)建一個session,并賦予其一個sessionID,發(fā)送給客戶端的瀏覽器。以后客戶端接著請求本應(yīng)用中其他資源的時候,會自動在請求頭上添加:

Cookie:JSESSIONID=客戶端第一次拿到的session ID

這樣,服務(wù)器端在接到請求時候,就會收到session ID,并根據(jù)ID在內(nèi)存中找到之前創(chuàng)建的session對象,提供給請求使用。

Session的刪除

(1)Session超時:超時指的是連續(xù)一定時間服務(wù)器沒有收到該Session所對應(yīng)客戶端的請求,并且這個時間超過了服務(wù)器設(shè)置的Session超時的最大時間

(2)程序調(diào)用HttpSession.invalidate()

(3)服務(wù)器關(guān)閉或服務(wù)停止

Session的存放

服務(wù)器端的內(nèi)存中。不過session可以通過特殊的方式做持久化管理。

session是一個容器,可以存放會話過程中的任何對象。


二、Cookies

Cookies要解決的問題

有些開發(fā)者借助請求中的ip頭部來唯一標識發(fā)出此次請求的客戶端,但是這種方式存在很多問題。因為,有些用戶是通過代理來訪問的,比如用戶A通過代理B連接網(wǎng)站www.example.com, 服務(wù)器端獲取的ip信息是代理B分配給A的ip地址,如果用戶這時斷開代理,然后再次連接代理的話,它的代理ip地址又再次改變,也就說一個用戶對應(yīng)了多個ip地址,這種情況下,服務(wù)器端根據(jù)ip地址來標識用戶的話,會認為請求是來自不同的用戶,事實上是同一個用戶。 還用另外一種情況就是,比如很多用戶是在同一個局域網(wǎng)里通過路由連接互聯(lián)網(wǎng),然后都訪問www.example.com的話,由于這些用戶共享同一個外網(wǎng)ip地址,這會導(dǎo)致服務(wù)器認為這些用戶是同一個用戶發(fā)出的請求,因為他們是來自同一個ip地址的訪問。

保持應(yīng)用程序狀態(tài)的第一步就是要知道如何來唯一地標識每個客戶端。因為只有在http中請求中攜帶的信息才能用來標識客戶端,所以在請求中必須包含某種可以用來標識客戶端唯一身份的信息。Cookie設(shè)計出來就是用來解決這一問題的。

Token

既然我們可以檢查User-Agent這個頭部來加強安全性,那么不妨再利用其它的一些頭部信息,把他們組合起來生成一個加密的token,并且讓客戶端在后續(xù)的請求中攜帶這個token!這樣的話,攻擊者基本上不可能猜測出這樣一個token是怎么生成出來的。這好比你用信用卡在超市付款,一個你必須有信用卡(好比session id),另外你也必須輸入一個支付密碼(好比token),這有這兩者都符合的情況下,你才能成功進入賬號付款。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評論 19 139
  • 一、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,741評論 6 152
  • http://www.91ri.org/tag/fuzz-bug 通常情況下,有三種方法被廣泛用來防御CSRF攻擊...
    jdyzm閱讀 4,391評論 0 5
  • Http協(xié)議詳解 標簽(空格分隔): Linux 聲明:本片文章非原創(chuàng),內(nèi)容來源于博客園作者MIN飛翔的HTTP協(xié)...
    Sivin閱讀 5,344評論 3 82
  • 國家電網(wǎng)公司企業(yè)標準(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 12,370評論 6 13

友情鏈接更多精彩內(nèi)容