Cookie 和 Session分析

1.Cookie概念

  • 當用戶使用瀏覽器首次訪問一個支持Cookie的網站的時候,用戶會提供包括用戶名在內的我的信息發送到服務器;
  • 接着服務器端接收到客戶端發送過來的http請求後,會發送一個http響應到客戶端,其中包含Set-Cookie頭部,自此,客戶端再向服務器發送請求的時候,都會把相應的Cookie再次發回至服務器,服務器在接收到來自客戶端瀏覽器的請求以後,就可以經過分析存放於請求頭的Cookie獲得客戶端特有的信息,從而動態生成與該客戶端相對應的內容;

Cookie工做圖示
在客戶端的第二次請求中包含的Cookie頭部中,提供給了服務器端能夠用來惟一標識客戶端身份的信息。這時,服務器端也就能夠判斷客戶端是否啓用了cookieshtml

在客戶端的第二次請求中包含的Cookie頭部中,提供給了服務器端能夠用來惟一標識客戶端身份的信息。這時,服務器端也就能夠判斷客戶端是否啓用了cookies,查看瀏覽器中的Cookie信息跨域

2.爲何要使用Cookie

  • Web應用程序是使用HTTP協議傳輸數據的,可是HTTP協議是無狀態的協議,也就是說一旦數據交換完畢,客戶端與服務器端的鏈接就會關閉,再次交換數據須要創建新的鏈接;
  • 這就意味着服務器沒法從鏈接上跟蹤會話,若是想要蹤該會話,必須引入一種機制,Cookie就是這樣的一種機制,它能夠彌補HTTP協議無狀態的不足,在Session出現以前基本上全部的網站都採用Cookie來跟蹤會話;

3.Cookie管理機制

  • Cookie具備不可跨域名性,根據Cookie規範,瀏覽器訪問一個域名時只會攜帶此域名的Cookie,而不會攜帶其餘域名的Cookie;
  • Cookie在客戶端是由瀏覽器來管理的,瀏覽器可以保證域名不跨域,從而保證用戶的隱私安全,瀏覽器判斷一個網站是否能操做另外一個網站Cookie的依據是域名;

4.Cookie的屬性介紹

  • name:名稱,Cookie一旦建立,名稱便不可更改;
  • value:值,若是值爲Unicode字符,須要爲字符編碼,若是值爲二進制數據,則須要使用BASE64編碼;
  • maxAge:Cookie失效的時間,單位秒,默認爲-1。若是爲正數則該Cookie在在超過maxAge秒以後失效。若是爲負數則Cookie爲臨時Cookie,關閉瀏覽器即失效,瀏覽器也不會以任何形式保存該Cookie。若是爲0,表示刪除該Cookie。
  • secure:Cookie是否僅被使用安全協議(HTTPS,SSL等)傳輸;
  • path:Cookie的使用路徑,若是設置爲「/sessionWeb/」,則只有contextPath爲「/sessionWeb」的程序能夠訪問該Cookie。若是設置爲「/」,則本域名下contextPath均可以訪問該Cookie。注意最後一個字符必須爲「/」;
  • String domain:能夠訪問該Cookie的域名,若是設置爲「.9xkd.com」,則全部以「9xkd.com」結尾的域名均可以訪問該Cookie。注意第一個字符必須爲「.」;

讓瀏覽器禁用Cookie,這樣當再次訪問登陸過的網頁時須要從新登陸,瀏覽器



5.Session概念

  • Session是服務器端使用的一種記錄客戶端狀態的機制,使用上比Cookie簡單一些,相應的也增長了服務器的存儲壓力;
  • Session技術則是服務端的解決方案,它是經過服務器來保持狀態的,咱們一般都會把Session翻譯成會話,所以咱們能夠把客戶端瀏覽器與服務器之間一系列交互的動做稱爲一個 Session;

6.使用Session

  • 第一步是建立Session,Session是在服務器端程序運行的過程當中建立的,不一樣語言實現的應用程序有不一樣建立Session的方法,在建立了Session的同時,服務器會爲該Session生成惟一的Session id,而這個Session id在隨後的請求中會被用來從新得到已經建立的Session;
  • 而後能夠調用Session相關的方法往Session中增長內容,這些內容只會保存在服務器中,發到客戶端的只有Session id;
  • 當客戶端再次發送請求的時候,會將這個Session id帶上,服務器接受到請求以後就會依據Session id找到相應的Session,從而再次使用,這樣用戶的狀態也就得以保持了;

7.Cookie與Session的區別

  • cookie數據存放在客戶的瀏覽器上,session數據存放在服務器上;
  • cookie沒有Session安全,別人能夠分析存放在本地的Cookie並進行Cookie欺騙,考慮到安全應當使用session;
  • session會在必定時間內保存在服務器上,當訪問增多,會比較佔用服務器的性能,考慮到減輕服務器性能方面,應當使用Cookie;
  • 服務端的session的實現對客戶端的cookie有依賴關係的,sessionid是寫在cookie中的;

參考:https://www.9xkd.com/user/plan-view.html?id=9813237300安全

相關文章
相關標籤/搜索