http基礎 cookie和session的區別

2021-08-26 02:13:45 字數 2833 閱讀 1012

1.cookie 是一種傳送到客戶瀏覽器的文字串控制代碼,並儲存在客戶機硬碟上,可以用來在某個web站點會話間持久的保持資料。

session其實指的就是訪問者從到達某個特定主頁到離開為止的那段時間。 session其實是利用cookie進行資訊處理的,當使用者首先進行了請求後,服務端就在使用者瀏覽器上建立了乙個cookie,當這個session結束時,其實就是意味著這個cookie就過期了。

注:為這個使用者建立的cookie的名稱是aspsessionid。這個cookie的唯一目的就是為每乙個使用者提供不同的身份認證。

3.cookie和session的共同之處在於:cookie和session都是用來跟蹤瀏覽器使用者身份的會話方式。

4.1cookie資料儲存在客戶端,session資料儲存在伺服器端。

如果web伺服器端使用的是session,那麼所有的資料都儲存在伺服器上,客戶端每次請求伺服器的時候會傳送當前會話的sessionid,伺服器根據當前sessionid判斷相應的使用者資料標誌,以確定使用者是否登入或具有某種許可權。由於資料是儲存在伺服器上面,所以你不能偽造,但是如果你能夠獲取某個登入使用者的 sessionid,用特殊的瀏覽器偽造該使用者的請求也是能夠成功的。sessionid是伺服器和客戶端鏈結時候隨機分配的,一般來說是不會有重複,但如果有大量的併發請求,也不是沒有重複的可能性.

如果瀏覽器使用的是cookie,那麼所有的資料都儲存在瀏覽器端,比如你登入以後,伺服器設定了cookie使用者名稱,那麼當你再次請求伺服器的時候,瀏覽器會將使用者名稱一塊傳送給伺服器,這些變數有一定的特殊標記。伺服器會解釋為cookie變數,所以只要不關閉瀏覽器,那麼cookie變數一直是有效的,所以能夠保證長時間不掉線。如果你能夠截獲某個使用者的 cookie變數,然後偽造乙個資料報傳送過去,那麼伺服器還是認為你是合法的。所以,使用 cookie被攻擊的可能性比較大。如果設定了的有效時間,那麼它會將 cookie儲存在客戶端的硬碟上,下次再訪問該**的時候,瀏覽器先檢查有沒有 cookie,如果有的話,就讀取該 cookie,然後傳送給伺服器。如果你在機器上面儲存了某個論壇 cookie,有效期是一年,如果有人入侵你的機器,將你的 cookie拷走,然後放在他的瀏覽器的目錄下面,那麼他登入該**的時候就是用你的的身份登入的。所以 cookie是可以偽造的。當然,偽造的時候需要主意,直接copy    cookie檔案到 cookie目錄,瀏覽器是不認的,他有乙個index.dat檔案,儲存了 cookie檔案的建立時間,以及是否有修改,所以你必須先要有該**的 cookie檔案,並且要從保證時間上騙過瀏覽器

5.兩個都可以用來存私密的東西,同樣也都有有效期的說法,區別在於session是放在伺服器上的,過期與否取決於伺服器的設定,cookie是存在客戶端的,過去與否可以在cookie生成的時候設定進去。

(1)cookie資料存放在客戶的瀏覽器上,session資料放在伺服器上

(2)cookie不是很安全,別人可以分析存放在本地的cookie並進行cookie欺騙,如果主要考慮到安全應當使用session

(3)session會在一定時間內儲存在伺服器上。當訪問增多,會比較占用你伺服器的效能,如果主要考慮到減輕伺服器效能方面,應當使用cookie

(4)單個cookie在客戶端的限制是3k,就是說乙個站點在客戶端存放的cookie不能3k。

(5)所以:將登陸資訊等重要資訊存放為session;其他資訊如果需要保留,可以放在cookie中

session原理:

1、session是儲存在伺服器端,理論上是沒有是沒有限制,只要你的記憶體夠大

2、瀏覽器第一次訪問伺服器時會建立乙個session物件並返回乙個jsessionid=id的值,

建立乙個cookie物件key為jssionid,value為id的值,將這個cookie寫回瀏覽器

3、瀏覽器在第二次訪問伺服器的時候攜帶cookie資訊jsessionid=id的值,如果該jsessionid的session已經銷毀,

那麼會重新建立乙個新的session再返回乙個新的jsessionid通過cookie返回到瀏覽器

4、針對乙個web專案,乙個瀏覽器是共享乙個session,就算有兩個web專案部署在同乙個伺服器上,針對兩個專案的session是不同的

如:你在tomcat上同時部署了兩個web專案,分別是web1、web2。當你在乙個瀏覽器上同時訪問web1時建立的session是a1,訪問web2時建立的session是a2。

後面你再多次訪問web1使用的session還是a1,多次訪問web2時使用session就是a2

5、session是基於cookie技術實現,重啟瀏覽器後再次訪問原有的連線依然會建立乙個新的session,

因為cookie在關閉瀏覽器後就會消失,但是原來伺服器的session還在,只有等到了銷毀的時間會自動銷毀

6、如果瀏覽器端禁用了cookie,那麼每次訪問都會建立乙個新的session,但是我們可以通過伺服器端程式重寫url即可,如果頁面多連線多,會增加不必要的工作量,

那可以強制讓你使用者開啟接收cookie後再讓其訪問即可。

大白話:當你一次訪問伺服器的時候,伺服器會在記憶體中開闢一塊空間,返回唯一一把開啟該空間的鑰匙,再把這把鑰匙返回到瀏覽器。

當你第二次訪問的時候瀏覽器會攜帶這把鑰匙到伺服器端開啟對應的空間,如果該空間已經銷毀又重新返回開闢一塊新的空間返回新的鑰匙到瀏覽器。

面試:說說cookie和session的區別?

1、cookie和session都是會話技術,cookie是執行在客戶端,session是執行在伺服器端。

2、cookie有大小限制以及瀏覽器在存cookie的個數也有限制,session是沒有大小限制和伺服器的記憶體大小有關。

3、cookie有安全隱患,通過攔截或本地檔案找得到你的cookie後可以進行攻擊。

4、session是儲存在伺服器端上會存在一段時間才會消失,如果session過多會增加伺服器的壓力。

HTTP協議之Cookie和Session

http是無狀態協議,那麼服務端如何識別特定的客戶端呢?注 無狀態指http協議自身不對請求和響應之間的通訊狀態進行儲存。對傳送過的請求和響應都不做持久化處理 即不做任何儲存 每次http請求的時候,客戶端都會傳送相應的cookie資訊到服務端。實際上大多數的應用都是用cookie來實現sessio...

http會話技術 cookie和session

會話 乙個會話中包含多次請求和響應。一次會話 瀏覽器第一次給伺服器資源傳送請求 會話建立,直到一方斷開為止。功能 在一次會話的範圍內的多次請求間,共享資料 方式 伺服器 servlet 建立cookie物件,繫結資料 new cookie string name,string value 伺服器傳送...

python基礎教程 dict和se

python內建字典 dict,全稱dictionary,在其他語言中稱為map,使用鍵值對儲存。ex d d xiaoli 95 直接定義鍵值對 ex d adm 67 d adm 67 判斷key是否存在 ex in 判斷 theme in d false get方法 d.get theme d...