Cookie和Session有哪些區別?其實,兩者作為PHP會話管理的差異是顯而易見的。Cookie是數據存儲在瀏覽器端,最大的優點是方便與JS交換數據和獲取用戶信息。而Session數據存儲在服務器,它的優勢是安全高效,不依賴瀏覽器端環境。嚴格來說,兩者各自有著千絲萬縷聯系的同時,也是相互區別的。下面小編來帶大家一起認識一下Cookie和Session。
1、什么是Cookie
HTTP 是無狀態的協議:每個請求都是完全獨立的,服務端無法確認當前訪問者的身份信息,無法分辨上一次的請求發送者和這一次的發送者是不是同一個人。所以服務器與瀏覽器為了進行會話跟蹤,就必須主動的去維護一個狀態,這個狀態用于告知服務端前后兩個請求是否來自同一瀏覽器。而這個狀態需要通過 cookie 或者 session 去實現。
Cookie存儲在客戶端:Cookie是服務器發送到用戶瀏覽器并保存在本地的一小塊數據,它會在瀏覽器下次向同一服務器再發起請求時被攜帶并發送到服務器上。Cookie是不可跨域的: 每個Cookie都會綁定單一的域名,無法在別的域名下獲取使用,一級域名和二級域名之間是允許共享使用的。
Cookie重要的屬性屬性說明name=value鍵值對,設置Cookie的名稱及相對應的值,都必須是字符串類型。如果值為 Unicode 字符,需要為字符編碼。如果值為二進制數據,則需要使用 BASE64 編碼。domain指定Cookie所屬域名,默認是當前域名指定Cookie在哪個路徑(路由)下生效,默認是 '/'。如果設置為 /abc,則只有 /abc 下的路由可以訪問到該Cookie,如:/abc/read。maxAgecookie 失效的時間,單位秒。如果為整數,則該Cookie在 maxAge 秒后失效。如果為負數,該Cookie為臨時Cookie,關閉瀏覽器即失效,瀏覽器也不會以任何形式保存該 cookie 。如果為 0,表示刪除該Cookie,默認 -1。
比expires好用。expires過期時間,在設置的某個時間點后該Cookie就會失效。一般瀏覽器的Cookie都是默認儲存的,當關閉瀏覽器結束這個會話的時候,這個Cookie也就會被刪除secure該Cookie是否僅被使用安全協議傳輸。安全協議有 HTTPS,SSL等,在網絡上傳輸數據之前先將數據加密。默認為false。當 secure 值為 true 時,Cookie在 HTTP 中是無效,在 HTTPS 中才有效。Cookied如果給某個Cookie設置了 httpOnly 屬性,則無法通過 JS 腳本 讀取到該 cookie 的信息,但還是能通過 Application 中手動修改Cookie,所以只是在一定程度上可以防止 XSS 攻擊,不是絕對的安全
2、認識Session
Session:在計算機中,尤其是在網絡應用中,稱為“會話控制”。Session對象存儲特定用戶會話所需的屬性及配置信息。這樣,當用戶在應用程序的Web頁之間跳轉時,存儲在Session對象中的變量將不會丟失,而是在整個用戶會話中一直存在下去。Session是另一種記錄服務器和客戶端會話狀態的機制;Session是基于Cookie實現的,Session 存儲在服務器端,SessionId會被存儲到客戶端的Cookie中。
Session認證流程:用戶第一次請求服務器的時候,服務器根據用戶提交的相關信息,創建對應的Session。請求返回時將此Session的唯一標識信息SessionID 返回給瀏覽器,瀏覽器接收到服務器返回的SessionID 信息后,會將此信息存入到 Cookie中,同時Cookie記錄此SessionID 屬于哪個域名。當用戶第二次訪問服務器的時候,請求會自動判斷此域名下是否存在 Cookie 信息,如果存在自動將 Cookie 信息也發送給服務端,服務端會從Cookie中獲取SessionID,再根據SessionID 查找對應的 Session 信息,如果沒有找到說明用戶沒有登錄或者登錄失效,如果找到Session證明用戶已經登錄可執行后面操作。根據以上流程可知,SessionID是連接Cookie和Session的一道橋梁,大部分系統也是根據此原理來驗證用戶登錄狀態。
3、Cookie和Session區別:
(1)Session保存在服務端,Cookie保存在客戶端。
(2)因為Cookie存在客戶端,用戶可以看見進行編輯偽造,所以安全性低。
(3)Session對象是在服務器內存中的,而基于窗口的Cookie是在客戶端內存中的。
(4)Cookie不是很安全,別人可以分析存放在本地的Cookie,進行Cookie欺騙。
關于Cookie和Session的區別,本文就講到這里了,大家都理解了嗎?更多相關文章,盡在億速云資訊欄目,感興趣的朋友可以關注一下。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。