cookie和session的區別

2022-09-02 15:39:18 字數 3719 閱讀 6011

cookie機制

cookie概念

在瀏覽某些 ** 時

,這些**會把 一些資料存在 客戶端

, 用於使用** 等

跟蹤使用者,實現使用者自定義 功能

.是否設定過期時間:

如果不設定

過期時間

,則表示這個

cookie生命週期

為瀏覽器會話期間 , 只要關閉瀏覽器

,cookie

就消失了

.這個生命期為瀏覽會話期的

cookie,

就是會話

cookie;

儲存:    一般儲存在

記憶體,不在硬碟

;如果設定了過期時間

, 瀏覽器會把

cookie

儲存在硬碟上

,關閉再開啟瀏覽器

, 這些

cookie

依然有效直到

超過的設定

過期時間;

儲存在硬碟

上的cookie可以在不同的瀏覽器程序間共享,比如兩個ie視窗。

而對於儲存

在記憶體的cookie,不同的瀏覽器有不同的處理方式。

原理:如果瀏覽器使用的是 cookie,那麼所有的資料都儲存在瀏覽器端

,比如你登入以後,伺服器設定了

cookie使用者名稱(username),那麼,當你再次請求伺服器的時候,瀏覽器會將username一塊傳送給伺服器,這些變數有一定的特殊標記。

伺服器會解釋為

cookie變數。

所以只要不關閉瀏覽器,那麼

cookie變數便一直是有效的,所以能夠保證長時間不掉線。

如果你能夠截獲某個使用者的

cookie變數,然後偽造乙個資料報傳送過去,那麼伺服器還是認為你是合法的。所以,使用 cookie被攻擊的可能性比較大。

如果設定了的有效時間,那麼它會將

cookie儲存在客戶端的硬碟上,下次再訪問該**的時候,瀏覽器先檢查有沒有 cookie,如果有的話,就讀取該

cookie,然後傳送給伺服器。

如果你在機器上面儲存了某個論壇

cookie,有效期是一年,如果有人入侵你的機器,將你的

cookie拷走,然後放在他的瀏覽器的目錄下面,那麼他登入該**的時候就是用你的的身份登入的。

所以 cookie是可以偽造的。

當然,偽造的時候需要主意,直接copy cookie檔案到

cookie目錄,瀏覽器是不認的,

他有乙個index.dat檔案,儲存了

cookie檔案的建立時間,以及是否有修改,所以你必須先要有該**的 cookie檔案,並且要從保證時間上騙過瀏覽器,

曾經在學校的vbb論壇上面做過試驗,copy別人的

cookie登入,冒用了別人的名義發帖子,完全沒有問題。

cookie 用法:

setcookie("user","zy",time()+3600);

設定user為zy,一小時之後失效;

$_cookie['user'];

取回user值(名字)

setcookie("user","",time()-3600);

刪除cookie,第二個引數為空,第三個時間設定為小於系統的當前時間即可.

或在瀏覽器設定

在使用cookie時,cookie自動生成乙個文字檔案儲存在ie瀏覽器的cookie臨時資料夾中,應用瀏覽器刪除cookie檔案的具體操作步驟為

>選擇ie瀏覽器中的工具/internet選項命令,開啟internet選項對話方塊,

>在常規選項卡中單擊刪除cookie按鈕,在彈出的對話方塊中單擊確定按鈕,即可成功刪除全部cookie檔案.

session的概念

session

是存放在伺服器端

的類似於hashtable結構(每一種web開發技術的實現可能不一樣,下文直接稱之為hashtable)來存放使用者資料;

作用:實現網頁之間資料傳遞,是乙個儲存在伺服器端的物件集合。

原理:當使用者請求乙個asp.net頁面時,系統將自動建立乙個session;退出應用程式或關閉伺服器時,該session撤銷。系統在建立session時將為其分配乙個長長的字串標識,以實現對session進行管理與跟蹤。

session機制是一種伺服器端的機制,伺服器使用一種類似於雜湊表的結構(也可能就是使用雜湊表)來儲存資訊。儲存:

儲存在server段的記憶體

程序中的,而這個程序相當不穩定,經常會重啟,這樣重啟的話,就會造成session失效,使用者就必須要重新登入,使用者體驗相當差,比如使用者在填寫資料,快要結束的時候

session

失效,直接跳到登入頁面

;cookie

和session 的區別:

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

簡單的說,當你登入乙個**的時候,如果web伺服器端使用的是session,那麼所有的資料都儲存在伺服器上面,

客戶端每次請求伺服器的時候會傳送

當前會話的session_id,伺服器根據當前session_id判斷相應的使用者資料標誌,以確定使用者是否登入,或具有某種許可權。

由於資料是儲存在伺服器

上面,所以你不能偽造,但是如果你能夠獲取某個登入使用者的session_id,用特殊的瀏覽器偽造該使用者的請求也是能夠成功的。

session_id是服務

器和客戶端鏈結時候隨機分配的,一般來說是不會有重複,但如果有大量的併發請求,也不是沒有重複的可能性,我曾經就遇到過一次。

登入某個**,開始顯示的

是自己的資訊,等一段時間超時了,一重新整理,居然顯示了別人的資訊。

session是由應用伺服器維持的乙個伺服器端的儲存空間,使用者在連線伺服器時,會由伺服器生成乙個唯一的sessionid,用該sessionid

為識別符號來訪問伺服器端的session儲存空間。而sessionid這一資料則是儲存到客戶端,用cookie儲存的,使用者提交頁面時,會將這一

sessionid提交到伺服器端,來訪問session資料。這一過程,是不用開發人員干預的。所以一旦客戶端禁用cookie,那麼session也會失效。

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

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

4、單個cookie儲存的資料不能超過4k,很多瀏覽器都限制乙個站點最多儲存20個cookie。(session物件沒有對儲存的資料量的限制,其中可以儲存更為複雜的資料型別)

注意:session很容易失效,使用者體驗很差;

雖然cookie不安全,但是可以加密 ;

cookie也分為永久 和暫時 存在的;

瀏覽器 有禁止cookie功能

,但一般使用者都不會設定;

一定要設定失效時間,要不然瀏覽器關閉就消失了;

工作原理:

cookie:伺服器通過在http的響應頭中加上一行特殊的指示以提示瀏覽器按照指示生成相應的cookie

session:是指從乙個瀏覽器視窗開啟到關閉這個期間

客戶端禁用或不支援cookie時,仍然可以使用session

Session和Cookie的區別

session和cookie的區別 1 儲存的位置不同 session儲存在伺服器端的記憶體中,占用伺服器資源。cookie是儲存在客戶端。可以是瀏覽器中或者是檔案中 2 儲存的時間不同 session是關閉當前會話相關瀏覽器後自動清空。cookie是根據過期時間而會有不同。3 安全性不同 sess...

cookie和session的區別

一 cookie機制和session機制的區別 具體來說cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。同時我們也看到,由於在伺服器端保持狀態的方案在客戶端也需要儲存乙個標識,所以session機制可能需要借助於cookie機制來達到儲存標識的目...

cookie和session的區別

分類 計算機網路 2011 10 21 10 43 4785人閱讀收藏 舉報 session 瀏覽器伺服器 servlet url儲存 一 cookie機制和session機制的區別 具體來說cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。同時我...