כששרת אינטרנט מגיב לבקשה למשאב, השרת יכול לכלול כותרת Set-Cookie
בתגובה שלו. הכותרת הזו אומרת לדפדפן לאחסן קובץ Cookie. לדוגמה: Set-Cookie:cat=tabby
במאמר מהם קובצי Cookie? מוסבר איך קובצי Cookie פועלים.
בנוסף לשם וערך של קובץ Cookie, Set-Cookie
יכול לכלול מאפיינים שקובעים אם קובצי Cookie מוגדרים ומתי הם יפוגו. המאפיינים של קובצי ה-Cookie מופרדים באמצעות נקודה-פסיק. לדוגמה:
Set-Cookie:cat=tabby; Secure; HTTPOnly; Expires=Tue, 31 Dec 2999 23:59:59 GMT;
במסמך הזה מוסברים המאפיינים החשובים ביותר של קובצי Cookie:
במאמר שימוש בקובצי Cookie של HTTP מוסבר על מאפייני קובצי Cookie בפירוט טכני.
מאובטח
אם כותרת Set-Cookie
כוללת את הערך Secure
, הקובץ ה-Cookie ייכלל רק בבקשות מוצפנות שמשתמשות בפרוטוקול HTTPS. הוא לא ייכלל בבקשות HTTP. התכונה הזו יכולה לעזור לעצור מתקפות של מתווכים, שבהן תוקף מתערב בחשאי בתקשורת בין הדפדפן לשרת כדי להעביר מידע, ויכול להיות שהוא גם משנה אותו.
HTTPOnly
אם הכותרת Set-Cookie
כוללת את HTTPOnly
, JavaScript לא יכול לגשת לקובץ ה-Cookie, למשל באמצעות document.cookie
. כך אפשר להגן על קובצי Cookie מפני סוגים מסוימים של מתקפות.
SameSite
בקשה למשאב מאתר ששונה מהאתר שבו אתם מבקרים היא בקשה בין אתרים. קובץ Cookie שמוגדר בתגובה לבקשה חוצת אתרים הוא קובץ Cookie של צד שלישי.
המאפיין SameSite
קובע אם קובץ Cookie של צד שלישי ייכלל בבקשה. יש לו שלושה ערכים אפשריים: Strict
, Lax
או None
.
מידע נוסף על קובצי Cookie של צד שלישי
מחמיר
קובץ ה-Cookie יישלח רק בתגובה לבקשות מדף שנמצא באתר המקור של קובץ ה-Cookie. לדוגמה: נניח שמשתמש מבקר באתר cats.example
ומוגדר לו קובץ Cookie עם המאפיין SameSite=Strict
. בהמשך, המשתמש נמצא באתר אחר ולוחץ על קישור לדף באתר cats.example
. קובץ ה-Cookie שהוגדר לא ייכלל בבקשה הזו.
Lax
ההתנהגות הזו זהה לזו של Strict
, אבל הדפדפן יכלול גם את קובץ ה-Cookie כשהמשתמש ילחץ על קישור לאתר המקור של קובץ ה-Cookie. (בדוגמה הקודמת של Strict
, קובץ ה-Cookie ייכלל כשהמשתמש ילחץ על הקישור ל-cats.example
). Lax
היא הגדרת ברירת המחדל אם לא נכלל מאפיין SameSite
בכותרת Set-Cookie
.
ללא
ללא הגבלות: קובץ ה-Cookie ייכלל בבקשה, בין אם היא חוצת אתרים ובין אם לא. אם משתמשים ב-SameSite=None
, קובץ ה-Cookie צריך לכלול גם את המאפיין Secure
.
חולקו למחיצות
המאפיין הזה מאפשר להביע הסכמה להכללת קובץ Cookie באחסון עם חלוקה למחיצות, עם "צנצנת Cookie" נפרדת לכל אתר ברמה העליונה. קובץ ה-Cookie מקבל שני מפתחות, אחד מהאתר ברמה העליונה ואחד מהדומיין שמגדיר אותו.
לדוגמה: נניח שגם אתר א' וגם אתר ב' כוללים iframe מאתר ג'. ל-iframe באתר ב' אין גישה לקבוצת קובצי Cookie מחולקת למחיצות שהוגדרה על ידי ה-iframe באתר א': קובץ ה-Cookie AC נפרד מקובץ ה-Cookie BC.
קובצי Cookie עם מאפיין Partitioned
נקראים CHIPS: Cookies Having Independent Partitioned State (קובצי Cookie עם חלוקה עצמאית למחיצות).
קובצי Cookie עם חלוקה למחיצות חייבים לכלול את המאפיין Secure
.
מידע נוסף על קובצי Cookie עם חלוקה עצמאית למחיצות
תפוגה ו-Max-Age
אתם יכולים לציין Expires
תאריך ושעה או Max-Age
בשניות, שאחריהם קובץ ה-Cookie יימחק ולא יישלח יותר. לדוגמה:
Set-Cookie:cat=tabby; Expires=Tue, 31 Dec 2999 23:59:59 GMT;
Set-Cookie:cat=tabby; Max-Age=86400
אם לא מציינים מאפיין Max-Age
או Expires
, קובץ Cookie יימחק כשהסשן הנוכחי יסתיים. קובץ Cookie כזה נקרא לפעמים קובץ Cookie של סשן.
דומיין
אם כותרת Set-Cookie
כוללת מאפיין Domain
, קובץ ה-Cookie ייכלל בבקשות לדומיין שצוין ולכל תת-הדומיינים שלו.
אם כותרת Set-Cookie
לא כוללת מאפיין Domain
, קובץ ה-Cookie לא ייכלל בבקשות לתת-דומיינים.
במילים אחרות, הוספת מאפיין Domain
מצמצמת את ההגבלות על הדומיין.
לדוגמה, עם תגובה מהאתר cats.example
:
-
Set-Cookie:cat=tabby
קובץ ה-Cookie ייכלל רק בבקשות אלcats.example
-
Set-Cookie:cat=tabby; Domain=cats.example
קובץ ה-Cookie ייכלל בבקשות אלcats.example
, וגם בבקשות למשאבים בתת-דומיינים כמוfluffy.cats.example
אוuser.assets.cats.example
נתיב
אם מאפיין Path
נכלל בכותרת תגובה Set-Cookie
, קובץ ה-Cookie שמוגדר ייכלל רק בבקשות לכתובות URL (באתר שהגדיר את קובץ ה-Cookie!) שתואמות לערך Path
.
לדוגמה:
-
Set-Cookie:cat=tabby; Path=/articles
הקובץ ה-Cookie ייכלל בבקשה לכל נתיב של כתובת URL שמתחיל ב-/articles
:
✅https://cats.example/articles/tabby/index.html
✅https://cats.example/articles/breeds/tabby/index.html
❎https://cats.example/images/tabby.jpg
❎https://cats.example/en/articles/tabby/index.html
Set-Cookie:cat=tabby; Path=/
כל הבקשות לכל כתובת URL באתר יכללו את קובץ ה-Cookie.
אם לכותרת התגובה Set-Cookie
אין ערך Path
, הקובץ ה-Cookie ייכלל רק בבקשות לאותה ספרייה. לדוגמה, נניח שקובץ Cookie מסוג cat=tabby
מוגדר בתגובה לבקשה של cats.example/images/tabby.jpg.
אם לא מוגדר Path
, קובץ ה-Cookie ייכלל רק בבקשות לקבצים בספרייה cats.example/images
.
הדגמות
- 1pc.glitch.me: הדגמה של קובץ Cookie מהדומיין הנוכחי
- 3pc.glitch.me: הדגמה של קובץ Cookie של צד שלישי
כלים
- איך צופים בקובצי Cookie, מוסיפים, עורכים ומוחקים אותם בכלי הפיתוח ל-Chrome
- Privacy Sandbox Analysis Tool
למידע נוסף
- מתכונים לקובצי Cookie מהדומיין הנוכחי
- מהם קובצי Cookie?
- מהם קובצי Cookie של צד שלישי?
- בקשת HTTP ותגובה
- כלים לניהול קובצי Cookie
- הדגמות של קובצי Cookie
- שימוש בקובצי Cookie של HTTP
- הסבר על קובצי Cookie מסוג SameSite
- OWASP: Cookies