咩係 Cookie?網站點樣記住你
Cookie 係網站要求你嘅瀏覽器儲存嘅一小段文字,然後喺你之後每次返去該網站時,再將佢送返去。網站就係靠佢「記住」你:例如你已經登入、購物車有咩嘢、你揀咗邊種語言。Cookie 只係資料,唔係程式,但由於佢可以用嚟識別你,所以無論係安全定私隱方面都好重要。
用 AI 建置時點解要留意
Cookie 位於你向 AI 建置工具要求嘅多項功能底下,而且經常都唔會提到「cookie」呢個字:
- 登入。 喺大部分網頁應用程式入面,「保持登入」就係指一個工作階段 Cookie。呢個 Cookie 點樣設定,就決定咗佢幾容易被盜取。
- 購物車同偏好設定。 重新整理頁面後仍然保留嘅購物籃,通常靠 Cookie 或瀏覽器儲存。
- 分析同廣告。 加入 Google Analytics、Meta 像素或即時聊天小工具,通常都會加入其他公司嘅 Cookie。
- 法律通知。 喺好多地方,部分 Cookie 需要先取得訪客同意,所以先會有 Cookie 橫幅。
如果你知道你嘅應用程式設定咗邊啲 Cookie,以及原因,你就可以更妥善咁決定安全設定、同意機制同私隱政策。
一個日常比喻
諗吓寄衣帽嘅號碼牌。你交出外套,就會拿到一張有號碼嘅牌。張牌本身冇件外套,只係一個號碼。每次你返去櫃檯,出示張牌,職員就知道邊件外套係你嘅。
工作階段 Cookie 嘅運作方式都係咁。當你登入,伺服器會喺佢那邊保存你嘅資料,然後俾你嘅瀏覽器一張「號碼牌」,即係一個好長嘅隨機 ID。你嘅瀏覽器每次請求都會出示呢張牌,伺服器就查出你係邊個。如果有人抄咗張牌,佢就可以攞走件外套,所以登入 Cookie 必須受到保護。
Cookie 實際點運作
- 你瀏覽一個網站。伺服器嘅回應包括一個類似
Set-Cookie: session_id=8f3k...; HttpOnly; Secure; SameSite=Lax嘅標頭。 - 你嘅瀏覽器將佢儲存下來,並與該網站嘅網域綁定。
- 之後每次向同一個網站發出請求,瀏覽器都會自動加入
Cookie: session_id=8f3k...。 - 伺服器讀取佢,就知道係你。
頁面嘅 JavaScript 亦可以建立 Cookie,但最重要嘅 Cookie,即登入工作階段,應該由伺服器設定,並對 JavaScript 隱藏。
Cookie 類型
| 類型 | 意思 | 例子 |
|---|---|---|
| 工作階段 Cookie | 冇到期日;瀏覽器工作階段結束時即被刪除 | 一個短暫嘅結帳步驟 |
| 持久 Cookie | 有到期日(Expires 或 Max-Age),重啟後仍然保留 | 「記住我 30 日」 |
| 第一方 | 由你喺網址列所示嘅網站設定 | 你喺該網站嘅登入 |
| 第三方 | 由嵌入喺頁面入面嘅另一個網域設定 | 廣告網絡嘅追蹤 ID |
| 嚴格所需 | 用戶所要求嘅服務必須用到 | 登入工作階段、購物車 |
| 非必要 | 對網站擁有者而言屬錦上添花 | 分析、廣告、A/B 測試 |
瀏覽器一直都越來越限制第三方 Cookie,因為佢哋被用嚟跨網站追蹤人。而家幾個主要瀏覽器都預設封鎖咗其中好多,而且細節仍在不斷改變,所以唔好將任何重要嘢建基於第三方 Cookie 之上。
實例:一間小型網上店舖
假設你建置咗一間售賣手工蠟燭嘅店舖。以下係一個合理版本會設定嘅 Cookie,以及原因。
session:店主或顧客登入時設定。佢只保存一個隨機 ID;真正嘅工作階段資料由伺服器保存。設定包括:HttpOnly(頁面腳本無法讀取)、Secure(只會透過 HTTPS 傳送)、SameSite=Lax(大部分由其他網站發起嘅請求都唔會附帶)。屬嚴格所需。
cart_id:令未登入嘅訪客仍然可以保留購物籃。佢指向儲存喺 資料庫 入面嘅購物車。屬嚴格所需,因為訪客要求加入嘢到購物車。
theme:記住深色模式。呢個可以用 Cookie 實現,但佢從來唔需要傳到伺服器,所以用瀏覽器 localStorage 會更簡單。
分析 Cookie:如果你安裝咗分析工具,就會加入呢類 Cookie。呢類屬非必要。喺歐盟同英國,佢哋一般要先取得同意先可以設定,所以分析腳本應該等訪客撳咗「接受」之後先載入。
留意呢間店舖唔會用 Cookie 儲存乜嘢:顧客嘅姓名、地址或信用卡資料。Cookie 會隨每次請求傳送,並且存放喺用戶嘅裝置入面,所以應該只保存 ID,而唔係個人資料。
常見術語解釋
| 術語 | 意思 |
|---|---|
| Cookie | 瀏覽器儲存並送返去網站嘅一組名稱與值。 |
Set-Cookie | 伺服器用嚟建立或更新 Cookie 嘅回應標頭。 |
| 工作階段(Session) | 伺服器對已登入用戶嘅紀錄,與一個 Cookie ID 相連。 |
HttpOnly | 防止頁面 JavaScript 讀取 Cookie,從而限制注入腳本所造成嘅損害。 |
Secure | Cookie 只會經加密嘅 HTTPS 連線傳送。 |
SameSite | 控制 Cookie 會唔會喺其他網站發出嘅請求中傳送(Strict、Lax 或 None)。 |
Expires / Max-Age | Cookie 應該喺幾時被刪除。 |
| Domain / Path | 網站上邊啲地址會收到該 Cookie。 |
| localStorage | 頁面程式碼可以讀取嘅瀏覽器儲存,但唔會自動傳送到伺服器。 |
| XSS | 跨網站腳本攻擊:攻擊者嘅腳本喺你嘅頁面入面執行,可能會試圖盜取資料。 |
| CSRF | 跨網站請求偽造:另一個網站誘使瀏覽器用你嘅 Cookie 發出請求。 |
| Cookie 同意 | 喺設定非必要 Cookie 之前,先徵求訪客嘅許可。 |
常見錯誤同誤解
- 「Cookie 係病毒。」 佢哋只係純文字,唔可以喺你部電腦上運行程式碼。
- 喺 Cookie 入面放敏感資料。 只需要儲存一個隨機 ID,詳細資料留喺伺服器。
- 將登入權杖放喺 localStorage。 任何喺頁面上運行嘅腳本都可以讀取 localStorage,包括被注入嘅腳本。
HttpOnlyCookie 則完全無法被頁面腳本讀取。 - 漏咗
Secure同HttpOnly。 呢兩個旗標成本好低,但可以堵塞常見嘅漏洞。 - 以為橫幅已經涵蓋一切。 如果喺有人撳「接受」之前,橫幅已經載入分析工具,咁橫幅就冇起到作用。
- 忘記登出功能。 登出時應該刪除 Cookie 同時喺伺服器結束工作階段,咁被複製嘅 Cookie 就會失效。
- 「如果我唔用 Cookie,私隱規則就唔適用。」 例如 GDPR 之類嘅規則,會涵蓋任何儲存位置嘅個人資料,包括本地儲存、裝置指紋同伺服器紀錄。
向你嘅 AI 建置工具要求乜嘢
- 「列出應用程式設定嘅每一個 Cookie、用途、有效時間,以及是否屬嚴格所需。」
- 「為登入工作階段使用
HttpOnly、Secure、SameSite=Lax嘅 Cookie。唔好將認證權杖放喺 localStorage。」 - 「Cookie 只保存隨機工作階段 ID;工作階段資料儲存於伺服器。」
- 「登出時清除 Cookie,並喺伺服器使工作階段失效。」
- 「喺訪客接受之前,唔好載入分析或行銷腳本,並記住佢哋嘅選擇。」
- 「喺私隱政策加入一節簡單嘅 Cookie 說明,內容要與上面嘅清單相符。」
有關同意部分,請參閱 點樣加入 Cookie 同意。至於 Cookie 點樣配合登入,可以閱讀 咩係認證。
Mythex 內嘅 Cookie
Mythex 唔會為你應用程式嘅用戶提供內置登入,所以你應用程式設定嘅 Cookie,來自佢自己嘅程式碼,以及你加入嘅工具,例如你所揀認證方式所設定嘅工作階段 Cookie。你可以喺聊天入面要求 AI 代理列出呢啲 Cookie、收緊佢哋嘅設定,或者加入同意橫幅,然後喺發布之前,喺即時預覽入面核實結果。文件中嘅 為應用程式加入登入 係一個好好嘅起始提示,而 你建置嘅應用程式嘅安全性 則講解點樣令金鑰同機密資料唔會落到瀏覽器入面。
常見問題
網站上嘅 Cookie 係咩?
Cookie 係網站要求你嘅瀏覽器儲存嘅一小段文字。之後每次你向該網站發出請求,瀏覽器都會把佢送返去,令網站可以記住一啲嘢,例如你有冇登入,或者購物車入面有咩。
Cookie 有冇危險?
Cookie 只係資料,唔係程式,所以佢唔能夠運行程式碼,亦唔會感染電腦。真正要留意嘅係私隱問題(第三方 Cookie 會跨網站追蹤你),以及安全問題(登入用嘅 Cookie 被盜取後,有人可能會假冒你)。
第一方同第三方 Cookie 有咩分別?
第一方 Cookie 係由你喺網址列所示嘅網站設定,例如登入 Cookie。第三方 Cookie 則由嵌入喺頁面入面嘅另一個網域設定,例如廣告網絡,而且經常用嚟跟蹤你喺多個網站之間嘅行為。
我需要 Cookie 橫幅嗎?
視乎你嘅用戶身處邊度,以及你用緊邊啲 Cookie。喺歐盟同英國,分析或廣告等非必要 Cookie 一般需要先取得同意,而登入工作階段等服務嚴格所需嘅 Cookie 通常就唔需要。請查核適用於你嘅規定。
Cookie 同 localStorage 有咩分別?
兩者都喺瀏覽器入面儲存資料。Cookie 會隨每次請求自動送去伺服器,所以適合用於登入。localStorage 則留喺瀏覽器入面,只會被頁面自己嘅程式碼讀取,所以適合用於例如主題顏色之類嘅偏好設定。