cookie與session的區別(圖文詳解)
一、共同之處:
cookie和session都是用來跟蹤瀏覽器使用者身份的會話方式。
二、工作原理:
1.Cookie的工作原理
(1)瀏覽器端第一次傳送請求到伺服器端
(2)伺服器端建立Cookie,該Cookie中包含使用者的資訊,然後將該Cookie傳送到瀏覽器端
(3)瀏覽器端再次訪問伺服器端時會攜帶伺服器端建立的Cookie
(4)伺服器端通過Cookie中攜帶的資料區分不同的使用者
2.Session的工作原理
(1)瀏覽器端第一次傳送請求到伺服器端,伺服器端建立一個Session,同時會建立一個特殊的Cookie(name為JSESSIONID的固定值,value為session物件的ID),然後將該Cookie傳送至瀏覽器端
(2)瀏覽器端傳送第N(N>1)次請求到伺服器端,瀏覽器端訪問伺服器端時就會攜帶該name為JSESSIONID的Cookie物件
(3)伺服器端根據name為JSESSIONID的Cookie的value(sessionId),去查詢Session物件,從而區分不同使用者。
name為JSESSIONID的Cookie不存在(關閉或更換瀏覽器),返回1中重新去建立Session與特殊的Cookie
name為JSESSIONID的Cookie存在,根據value中的SessionId去尋找session物件
value為SessionId不存在(Session物件預設存活30分鐘),返回1中重新去建立Session與特殊的Cookie
value為SessionId存在,返回session物件
Session的工作原理圖
三、區別:
cookie資料儲存在客戶端,session資料儲存在服務端。
session
簡單的說,當你登陸一個網站的時候,如果web伺服器端使用的是session,那麼所有的資料都儲存在伺服器上,客戶端每次請求伺服器的時候會傳送當前會話sessionid,伺服器根據當前sessionid判斷相應的使用者資料標誌,以確定使用者是否登陸或具有某種許可權。由於資料是儲存在伺服器上面,所以你不能偽造。
cookie
sessionid是伺服器和客戶端連線時候隨機分配的,如果瀏覽器使用的是cookie,那麼所有資料都儲存在瀏覽器端,比如你登陸以後,伺服器設定了cookie使用者名稱,那麼當你再次請求伺服器的時候,瀏覽器會將使用者名稱一塊傳送給伺服器,這些變數有一定的特殊標記。伺服器會解釋為cookie變數,所以只要不關閉瀏覽器,那麼cookie變數一直是有效的,所以能夠保證長時間不掉線。
如果你能夠截獲某個使用者的cookie變數,然後偽造一個資料包傳送過去,那麼伺服器還是 認為你是合法的。所以,使用cookie被攻擊的可能性比較大。
如果cookie設定了有效值,那麼cookie會儲存到客戶端的硬碟上,下次在訪問網站的時候,瀏覽器先檢查有沒有cookie,如果有的話,讀取cookie,然後傳送給伺服器。
所以你在機器上面儲存了某個論壇cookie,有效期是一年,如果有人入侵你的機器,將你的cookie拷走,放在他機器下面,那麼他登陸該網站的時候就是用你的身份登陸的。當然,偽造的時候需要注意,直接copy cookie檔案到 cookie目錄,瀏覽器是不認的,他有一個index.dat檔案,儲存了 cookie檔案的建立時間,以及是否有修改,所以你必須先要有該網站的 cookie檔案,並且要從保證時間上騙過瀏覽器
兩個都可以用來存私密的東西,session過期與否,取決於伺服器的設定。cookie過期與否,可以在cookie生成的時候設定進去。
四、區別對比:
(1)cookie資料存放在客戶的瀏覽器上,session資料放在伺服器上
(2)cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙,如果主要考慮到安全應當使用session
(3)session會在一定時間內儲存在伺服器上。當訪問增多,會比較佔用你伺服器的效能,如果主要考慮到減輕伺服器效能方面,應當使用COOKIE
(4)單個cookie在客戶端的限制是3K,就是說一個站點在客戶端存放的COOKIE不能3K。
(5)所以:將登陸資訊等重要資訊存放為SESSION;其他資訊如果需要保留,可以放在COOKIE中
相關文章
- cookie和session的詳解與區別CookieSession
- session與cookie的區別SessionCookie
- Cookie與Session詳解CookieSession
- cookie與session的區別與聯絡CookieSession
- Session與Cookie的區別與聯絡SessionCookie
- cookie和session的區別CookieSession
- Cookie & Session詳解CookieSession
- 一文搞懂Session和Cookie的用法及區別SessionCookie
- cookie,session,sessionStorage,localStotage的區別CookieSession
- 理解cookie、session、localStorage、sessionStorage的關係與區別CookieSession
- Cookie,Session Filter,Listener詳解CookieSessionFilter
- cookie與session的區別以及在Django中的實現CookieSessionDjango
- http協議/cookie詳解/session詳解HTTP協議CookieSession
- cookie和session的區別(全面總結)CookieSession
- Cookie 和 Session 關係和區別CookieSession
- Token ,Cookie、Session 三者區別CookieSession
- session 和 cookie 有什麼區別?SessionCookie
- cookie和session 有什麼區別?CookieSession
- Session是什麼?它與Cookie有什麼區別?SessionCookie
- 架構與思維:瞭解Http 和 Https的區別(圖文詳解)架構HTTP
- cookie與session的自己思考與解釋CookieSession
- Redis分散式Session和普通的cookie session有什麼區別?Redis分散式SessionCookie
- 【Python入門必看】Python中Cookie和Session的區別與聯絡!PythonCookieSession
- Session與CookieSessionCookie
- http中session和cookie的區別和關係HTTPSessionCookie
- cookie與session的使用CookieSession
- Django Cookie與SessionDjangoCookieSession
- equals與==的區別(詳解)
- cookie和session有什麼區別?Python學習!CookieSessionPython
- cookie是什麼?和session有什麼區別?CookieSession
- HTTP協議Cookie和Session有什麼區別HTTP協議CookieSession
- Cookie和Session的區別以及設計測試用例CookieSession
- samesite-cookie詳解(譯文)Cookie
- 詳解iframe與frame的區別
- 一文弄懂 HTTP、cookie、sessionHTTPCookieSession
- Cookie與Session 關係CookieSession
- cookie和session有什麼區別?Python學習分享CookieSessionPython
- synchronized與Lock的區別與使用詳解synchronized