Cookies 和 Session的詳解及區別,cookiessession
Cookies 和 Session的詳解及區別
1.cookie 是一種發送到客戶瀏覽器的文本串控制代碼,並儲存在客戶機硬碟上,可以用來在某個WEB網站會話間持久的保持資料。
2.session其實指的就是訪問者從到達某個特定首頁到離開為止的那段時間。 Session其實是利用Cookie進行資訊處理的,當使用者首先進行了請求後,服務端就在使用者瀏覽器上建立了一個Cookie,當這個Session結束時,其實就是意味著這個Cookie就到期了。
註:為這個使用者建立的Cookie的名稱是aspsessionid。這個Cookie的唯一目的就是為每一個使用者提供不同的身份認證。
session 從字面上講,就是會話。這個就類似於你和一個人交談,你怎麼知道當前和你交談的是張三而不是李四呢?對方肯定有某種特徵(長相等)表明他就是張三。session 也是類似的道理,伺服器要知道當前發請求給自己的是誰。為了做這種區分,伺服器就要給每個用戶端分配不同的“身份標識”,然後用戶端每次向伺服器發請求的時候,都帶上這個“身份標識”,伺服器就知道這個請求來自於誰了。至於用戶端怎麼儲存這個“身份標識”,可以有很多種方式,對於瀏覽器用戶端,大家都預設採用 cookie 的方式。
3.cookie和session的共同之處在於:cookie和session都是用來跟蹤瀏覽器使用者身份的會話方式。
4.cookie 和session的區別是:cookie資料儲存在用戶端,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中
感謝閱讀,希望能協助到大家,謝謝大家對本站的支援!