這篇文章主要介紹了Cookies 和Session的詳解及區別的相關資料,需要的朋友可以參考下
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中
需要學習js的同學請關注php中文網js影片教學,眾多js線上影片教學可以免費觀看!
以上是如何區別Cookies 和 Session? javascript中Cookies 與 Session的差異及詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!