LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

面試官: 你小子來(lái)聊聊你對(duì) cookie 的理解✋✋✋

freeflydom
2023年6月26日 14:40 本文熱度 675

隨著 Web 應(yīng)用程序的出現(xiàn),直接在客戶端存儲(chǔ)用戶信息的需求也隨之出現(xiàn)。這背后的想法是合理的:與特定用戶相關(guān)的信息應(yīng)該保存在用戶的機(jī)器上。無(wú)論是登錄信息、個(gè)人偏好,還是其他數(shù)據(jù),Web 應(yīng)用程序提供者都需要有辦法把它們保存在客戶端。對(duì)該問(wèn)題的第一個(gè)解決方案就是 cookie

cookie

cookieHTTP 請(qǐng)求標(biāo)頭,其中含有先前由服務(wù)器通過(guò) set-cookie 標(biāo)頭投放或通過(guò) JavascriptDocument.cookie 方法設(shè)置,然后存儲(chǔ)到客戶端的 HTTP cookie。例如下面是包含這個(gè)頭部的一個(gè) HTTP 響應(yīng):

HTTP/1.1 200 ok

Content-type: text/html

Set-Cookie: name=value


這個(gè) HTTP 響應(yīng)會(huì)設(shè)置一個(gè)名為 name,值為 valuecookie。名和值在發(fā)送時(shí)都會(huì)經(jīng)過(guò) URL 編碼。瀏覽器乎存儲(chǔ)這些會(huì)話信息,并在之后的每個(gè)請(qǐng)求中都會(huì)通過(guò) HTTP 頭部 cookie 再將它們分會(huì)服務(wù)器,比如:

GET /index.js HTTP/1.1

Cookie: name=value


這些發(fā)送會(huì)服務(wù)器的額外信息可用于唯一標(biāo)識(shí)發(fā)送請(qǐng)求的客戶端。

為什么 HTTP 需要 cookie

HTTP 是一種無(wú)狀態(tài)的協(xié)議,這意味著服務(wù)器無(wú)法在連續(xù)的請(qǐng)求之間保持客戶端的任何記憶。

接下來(lái)我們就來(lái)舉一個(gè)生活的例子:

假設(shè)你假設(shè)去一家麥當(dāng)勞,他們提供了一個(gè)優(yōu)惠活動(dòng),就是買滿 2 杯可樂(lè)可以送一只炸雞。

  1. 你進(jìn)入這家店店了一杯可樂(lè),收銀員會(huì)將你的點(diǎn)單信息輸入他們的系統(tǒng)中。如果沒(méi)有 cookie 的話,這服務(wù)員在你下次來(lái)的時(shí)候,壓根就不知道你是新客還是之前就已經(jīng)點(diǎn)過(guò)了;

  2. 服務(wù)器為你分配一個(gè)唯一的會(huì)話標(biāo)識(shí)符,并將其存儲(chǔ)在一個(gè)名為 session_idcookie 中。這個(gè) cookie 會(huì)存儲(chǔ)在你的瀏覽器中;

  3. 在你買完付款后,服務(wù)器會(huì)將一些與你的購(gòu)買相關(guān)的信息存儲(chǔ)在 cookie 中,如購(gòu)買的可樂(lè)數(shù)量和金額;

  4. 在你繼續(xù)購(gòu)買咖啡的過(guò)程中,服務(wù)器會(huì)在每個(gè)請(qǐng)求中檢查你的 session_id cookie,并根據(jù)其中存儲(chǔ)的購(gòu)買信息來(lái)判斷是否滿足送咖啡的條件;

  5. 當(dāng)你購(gòu)買的可樂(lè)數(shù)量達(dá)到 2 杯時(shí),服務(wù)器會(huì)識(shí)別出你已經(jīng)滿足了送炸雞的條件。它會(huì)在你的購(gòu)買信息中添加一條記錄,表示你可以獲得一只免費(fèi)的炸雞;

  6. 當(dāng)你下次訪問(wèn)咖啡店并購(gòu)買咖啡時(shí),服務(wù)器會(huì)讀取你的 cookie 中的購(gòu)買信息,并在檢查后繼續(xù)更新送咖啡的記錄;

  7. 當(dāng)你結(jié)賬時(shí),服務(wù)器會(huì)檢查購(gòu)買信息中的送咖啡記錄,如果滿足條件,會(huì)從賬單中減去相應(yīng)的金額,表示免費(fèi)咖啡的抵扣;

通過(guò)使用 cookie,麥當(dāng)勞的服務(wù)器可以跟蹤你的購(gòu)買數(shù)量,并根據(jù)設(shè)定的條件來(lái)提供送炸雞的優(yōu)惠。這樣,當(dāng)你購(gòu)買滿足要求的數(shù)量時(shí),服務(wù)器可以自動(dòng)判斷并為你提供一杯免費(fèi)的咖啡,使你在購(gòu)買咖啡時(shí)能夠享受到優(yōu)惠和獎(jiǎng)勵(lì)。

cookie 的限制

cookie 是與特定域綁定的,設(shè)置 cookie 后,它會(huì)與請(qǐng)求一起發(fā)送到創(chuàng)建它的域,這個(gè)限制能保證 cookie 中存儲(chǔ)的信息只對(duì)被認(rèn)可的接收者開發(fā),不被其他域訪問(wèn)。

因?yàn)?cookie 存儲(chǔ)在客戶端機(jī)器上,所以為保證它不會(huì)被惡意利用,瀏覽器會(huì)施加限制,同時(shí) cookie 也不會(huì)占用太多磁盤空間。

通常,只要遵守以下大致的限制,就不會(huì)在任何瀏覽器中碰到問(wèn)題:

  1. 容量限制: 每個(gè) cookie 的存儲(chǔ)容量通常被限制在幾個(gè) kb 到幾十 kb 之間,不同瀏覽器可能會(huì)有不同的限制,如果超過(guò)了這個(gè)限制,瀏覽器可能會(huì)拒絕保存 cookie 或?qū)⑵浣財(cái)?

  2. 數(shù)量限制: 瀏覽器對(duì)每個(gè)域名或整個(gè)瀏覽器的 cookie 數(shù)量也有限制,如果超過(guò)了這個(gè)數(shù)量限制,舊的 cookie 可能會(huì)被覆蓋或丟棄;

  3. 安全限制: 瀏覽器實(shí)施了一些安全策略來(lái)限制 cookie 的使用,例如它使用 HttpOnly 屬性來(lái)來(lái)防止通過(guò) Javascript 訪問(wèn) cookie,從而減少了被跨站腳本攻擊(Cross-site-scripting,XSS) 對(duì) cookie的信息竊取。同樣使用 Secure 屬性用于限制僅在 HTTPS 安全連接時(shí),才可以發(fā)送 Cookie;

  4. 域名和路徑限制: cookie 可以設(shè)置域名和路徑限制,指定了可以接收該 cookie 的域名范圍和 URL 路徑。這樣 cookie 只能在指定的域名和路徑下被發(fā)送和接收。例如,如果將 cookie 的域名限制為 .example.com,則只有以 example.com 結(jié)尾的子域名可以接受該 cookie;

需要注意的是,不同的瀏覽器和設(shè)備可能存在差異,對(duì) cookie 的限制和實(shí)施策略可能會(huì)有所不同。此外,隨著隱私和安全意識(shí)的提高,相關(guān)的法規(guī)和標(biāo)準(zhǔn)也可能對(duì) cookie 的使用提出更嚴(yán)格的要求。因此,在開發(fā)和使用 cookie 時(shí),需要遵守相關(guān)的法規(guī)和最佳實(shí)踐,以確保用戶隱私和數(shù)據(jù)安全。

cookie 的構(gòu)成

一個(gè)標(biāo)準(zhǔn)的 HTTP cookie 通常由以下幾個(gè)組成部分構(gòu)成:

  1. 名稱(name): cookie 的名稱通常用于標(biāo)識(shí)和引用該 cookie;

  2. 值(value): cookie 的值是否于名稱相關(guān)聯(lián)的信息,它可以是任意文本或數(shù)據(jù);

  3. 域(Domain): cookie 的域定義了可以訪問(wèn)該 cookie 的域名范圍,只有與該域匹配的網(wǎng)站才能讀取發(fā)送該 cookie;

  4. 路徑(Path): 路徑規(guī)定了可以訪問(wèn)該 cookieURL 路徑,只有與指定匹配的頁(yè)面才能訪問(wèn)該 cookie

  5. 過(guò)期時(shí)間(Expiration): cookie 的過(guò)期時(shí)間指定了該 cookie 的有效期限。一旦超過(guò)了過(guò)期時(shí)間,瀏覽器將刪除該 cookie。如果沒(méi)有指定過(guò)期時(shí)間,那么該 cookie 將成為會(huì)話 cookie,只在當(dāng)前會(huì)話期間有效,即關(guān)閉瀏覽器后將被刪除;

  6. 安全標(biāo)志(Secure):如果設(shè)置了安全標(biāo)志為 true,那么瀏覽器只會(huì)在通過(guò)加密的安全連接 HTTPS 發(fā)送該 cookie。這可以增加 cookie 的安全性,防止在傳輸過(guò)程中被竊取或篡改;

  7. HTTPOnly 標(biāo)志: 如果設(shè)置了 HTTPOnly 標(biāo)志為 true,那么該 cookie 將不允許通過(guò)客戶端的 Javascript 代碼訪問(wèn)。這有助于減少跨站腳本攻擊 XSS 對(duì) cookie 的利用;

這些組成部分以鍵值對(duì)的形式存儲(chǔ)在 cookie 中,并由瀏覽器在 HTTP 請(qǐng)求和響應(yīng)中進(jìn)行傳輸。這些標(biāo)志用于告訴瀏覽器什么情況下應(yīng)該在請(qǐng)求中包含 cookie,這些參數(shù)并不會(huì)隨請(qǐng)求發(fā)送個(gè)服務(wù)器,實(shí)際發(fā)送的只有 cookie 的 鍵/值 對(duì)。

cookie 的缺點(diǎn)

盡管 HTTP cookie 是廣泛使用的機(jī)制,但它也存在一些缺點(diǎn):

  1. 隱私問(wèn)題: Cookie 可以用于跟蹤用戶的行為和偏好,這引發(fā)了隱私方面的擔(dān)憂。第三方 cookie 可以在不同的網(wǎng)站之間共享和跟蹤用戶信息,可能導(dǎo)致用戶的隱私泄露和個(gè)人數(shù)據(jù)被濫用的風(fēng)險(xiǎn);

  2. 安全風(fēng)險(xiǎn): 由于 cookie 存儲(chǔ)在用戶的瀏覽器中,攻擊者可能會(huì)通過(guò)各種手段竊取 cookie,如 網(wǎng)絡(luò)嗅探、跨站腳本攻擊 XSS 和跨站請(qǐng)求偽造 CSRF 等。一旦攻擊者獲取了 cookie,他們可能會(huì)模擬用戶的身份,并訪問(wèn)敏感信息或執(zhí)行未經(jīng)授權(quán)的操作;

  3. 性能影響: 每個(gè) HTTP 請(qǐng)求中都會(huì)包含所有與當(dāng)前域相關(guān)的 cookie 信息,這會(huì)增加數(shù)據(jù)傳輸?shù)拇笮?對(duì)于每個(gè) HTTP 請(qǐng)求,瀏覽器都需要將 cookie 信息發(fā)送給服務(wù)器,這會(huì)增加網(wǎng)絡(luò)流量和延遲,特別是當(dāng) cookie 的數(shù)量或大小較大時(shí);

  4. 容量限制: 每個(gè) cookie 的存儲(chǔ)容量是有限的,通常在幾 KB 到幾十 KB 之間。對(duì)于需要存儲(chǔ)大量數(shù)據(jù)的應(yīng)用程序,cookie 的容量限制可能會(huì)成為問(wèn)題;

  5. 跨域限制: 瀏覽器實(shí)施了一些安全策略,限制了對(duì)其他域名的 cookie 訪問(wèn),跨域請(qǐng)求(跨域 ajax 請(qǐng)求)不能訪問(wèn)其他域的 cookie,這對(duì)于某些應(yīng)用程序可能會(huì)帶來(lái)限制;

  6. 用戶控制性不足: 盡管瀏覽器提供了一些控制 cookie 的選項(xiàng),如禁用第三方 cookie 或使用 隱身模式,但用戶對(duì)于如何管理和控制 cookie 的細(xì)粒度控制有限;

鑒于這些缺點(diǎn),對(duì)于保護(hù)用戶隱私和數(shù)據(jù)安全的考慮,開發(fā)人員和網(wǎng)站運(yùn)營(yíng)者應(yīng)該謹(jǐn)慎使用 cookie,并遵循隱私和安全最佳實(shí)踐,以確保合理使用和保護(hù)用戶的個(gè)人信息。

總結(jié)

為了合理使用 Cookie 并保護(hù)用戶隱私,開發(fā)人員應(yīng)遵循隱私和安全最佳實(shí)踐,限制 Cookie 的使用,并提供用戶對(duì) Cookie 的控制選項(xiàng)。用戶也可以通過(guò)瀏覽器設(shè)置來(lái)管理和刪除 Cookie,以控制其數(shù)據(jù)的使用和共享。

不要在 cookie 中存儲(chǔ)重要或敏感的信息,cookie 數(shù)據(jù)不是保存在安全的環(huán)境中,因此任何人都可能獲得,應(yīng)該避免把信用卡號(hào)或個(gè)人地址等信息保存在 cookie 中。


原文鏈接



該文章在 2023/6/26 14:40:09 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
中文字幕制服综合第一页 | 最新国产精品亚洲 | 日韩欧美三级中文字幕在线 | 色一情一乱一伦一区二区三区 | 亚洲怡红院在线视频 | 亚洲欧洲日本精品专线 |