מאפייני קובצי Cookie

כששרת אינטרנט מגיב לבקשה למשאב, השרת יכול לכלול כותרת 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 של הצד השלישי הזה.
בחלוקת קובצי Cookie למחיצות, שירות צד שלישי שמגדיר קובץ Cookie כשהוא מוטמע באתר ברמה העליונה לא יכול לגשת לאותו קובץ Cookie כשהשירות מוטמע באתרים אחרים ברמה העליונה.

קובצי 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 של צד שלישי

כלים

למידע נוסף