摘要:服務端設置好后,將會通過響應頭返回給瀏覽器。注意是在中發送的,所以之前不能有任何輸出。數據存儲在客戶端,容易被攔截篡改,不安全。數據存放在服務端,安全。當落入第三者時,服務端將無法分辨出是否是合法的請求。
Cookie 起源
作用當初 W3C 在設計 Cookie 時實際上考慮的是為了記錄用戶在一段時間內訪問 Web 應用的行為路徑。
由于HTTP 協議是一種無狀態協議,當用戶的一次訪問請求結束后,后端服務器就無法知道下一次來訪問的還是不是上次訪問的用戶。
Cookie 的作用正是在此,由于是同一個客戶端發出的請求,每次發出的請求都會帶有上一次訪問時服務端設置的信息,這樣服務端就可以根據之前存入 Cookie 的值來做相應的處理(區分訪問的用戶等)。
解決了客戶端和服務端之間的無狀態
通俗地講就是當一個用戶通過 HTTP 協議訪問一個服務器的時候,服務器會根據需要設置一些 Cookie 信息(Key/Value 鍵值對),并給這些數據加上一些限制條件,再以響應頭的形式返回給客戶端瀏覽器。在條件符合時這個用戶下次訪問這個服務器的時候,數據又被完整地帶回給服務器。
流程簡介當客戶端瀏覽器發送請求時,會根據自身的設置找尋相應條件下的 Cookie 信息并解析。若找到,則設置相應的請求頭信息,再發送請求,否則直接發送請求。
服務端設置好 $_COOKIE 后,將會通過響應頭返回給瀏覽器。注意: Cookie 是在 header 中發送的,所以之前不能有任何輸出。
缺點每次請求都會攜帶全部的 Cookie 信息,容易造成不必要的帶寬浪費。
每個瀏覽器對 Cookie 在同一個域名下的個數和每個 Cookie 的總大小(4kb)都有相應的限制。
數據存儲在客戶端,容易被攔截篡改,不安全。
客戶端可以禁用 Cookie,導致功能失效。
難于管理,大型系統里每個應用都會有自己的 Cookie,加上以上的限制,容易出現數據被截取,導致數據丟失。
Session基于以上的缺點, Session 來了。
流程簡介服務端(默認設置)接受請求時,先查看 $_COOKIE 中是否存在 name 為 PHPSESSID 的鍵值對(value 為服務端生成的 SESSION_ID:bebfaf6c745c1a6e5f341baf2178113b)。
若不存在(第一次請求),將會自動生成 SESSION_ID,寫入到 $_COOKIE 數組中(name 為 PHPSESSID, value 為 SESSION_ID),然后通過響應頭返回給瀏覽器。
若存在(非第一次請求),則根據 value 值到設置的目錄下獲取相應的文件,反序列化并寫入到 $_SESSION 數組供后續使用。
當服務端進行 $_SESSION 設置時,此 $_SESSION 只會維持在內存中。當腳本執行結束時,將會自動把 $_SESSION 序列化后寫入到 SESSION_ID 對應的文件中(創建或覆蓋)。
優點只將會話標識符放到 Cookie 里,減少帶寬的傳輸。
可以存儲大量的信息,基本沒有空間上的限制。
數據存放在服務端,安全。
可以統一集中式管理。
聯系SESSION 為了識別會話,需要傳輸一個唯一的 SESSION_ID 到客戶端。一般情況下,都是借助 Cookie 來傳遞,當然也可以通過其他方式進行傳遞。
Session 安全延伸以上分析得出, Session 需要通過 SESSION_ID 來識別客戶端,這就會導致一個安全隱患。當 SESSION_ID 落入第三者時,服務端將無法分辨出是否是合法的請求。
一個簡單的防御措施就是:每次請求時都生成一個新的 SESSION_ID 關聯到對應的數據并將老的 SESSION_ID 刪除。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22653.html
摘要:的作用就是為了解決協議無狀態的缺陷所作的努力。的內容主要包括名字,值,過期時間,路徑和域。這種生命期為瀏覽器會話期的被稱為會話。而機制采用的是一種在服務器端保持狀態的解決方案。中的有效期默認分鐘,也就是說,客戶端超過分鐘,當前就會失效。 會話控制是什么? cookie和session都是跟蹤整個會話過程的技術手段。而會話,就是用戶通過瀏覽器和服務器的一次通話。 為什么要有會話控制? 因...
摘要:服務器檢查該,以此來辨認用戶狀態。五下的相關應用應用在中配置如下配置項用于設置存儲方式,默認是,即存儲在文件中,該文件位于配置項配置的路徑,即。配置項用于設置有效期,默認為分鐘。配置項用于配置數據是否加密。 一、cookie的由來 ??當用戶訪問某網站時,web服務器會將部分信息保存到本地計算機上,當用戶再次關顧該網站時,服務器會去查看用戶是否登錄過該網站,如果登錄過,就會將這些記錄在...
摘要:無狀態協議無狀態協議,是指協議對于事務處理沒有記憶能力。缺少狀態意味著如果后續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。是通過客戶端保持狀態的解決方案。而這次,信息則存放在請求頭了。 HTTP無狀態協議 HTTP無狀態協議,是指協議對于事務處理沒有記憶能力。缺少狀態意味著如果后續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方...
摘要:無狀態協議無狀態協議,是指協議對于事務處理沒有記憶能力。缺少狀態意味著如果后續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。是通過客戶端保持狀態的解決方案。而這次,信息則存放在請求頭了。 HTTP無狀態協議 HTTP無狀態協議,是指協議對于事務處理沒有記憶能力。缺少狀態意味著如果后續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方...
閱讀 2683·2021-09-26 10:19
閱讀 2136·2021-09-24 10:27
閱讀 2520·2021-09-01 10:42
閱讀 2302·2019-08-29 16:09
閱讀 2485·2019-08-29 15:17
閱讀 1447·2019-08-29 15:09
閱讀 633·2019-08-29 11:14
閱讀 2301·2019-08-26 13:25