מעבר מקובצי cookie שלא מחולקים למחיצות (Partitions) לקובצי cookie מחולקים למחיצות

כשמעבירים את האתר לקובצי cookie עם חלוקה למחיצות, ייתכן שתיתקלו התנהגות לא צפויה אם גם קובץ Cookie עם חלוקה למחיצות וגם קובץ Cookie ללא חלוקה למחיצות, קיימים לכל לקוח נתון.

הגדרה של קובץ Cookie עם חלוקה למחיצות לא תבטל או תחליף קובץ קיים קובץ Cookie ללא מחיצות עם אותו שם. שניהם קיימים, כל עוד צד שלישי אבל קובצי ה-Cookie מופעלים, אבל בצנצנות קובצי Cookie נפרדות. מתי קובצי Cookie של צד שלישי מושבת, רק הפריט שפוצל יתקבל. אם שני קובצי ה-Cookie קיימת, לא ניתן לדעת באופן פרוגרמטי איזה מהם מחולק למחיצות מי מהם לא נכון, ויכול להיות שתהיה התנהגות לא צפויה.

יש שתי אפשרויות לפתרון הבעיה: 1. תפוגה של קובץ ה-cookie להחלפה 2. שינוי השם של קובצי ה-cookie

שיקולים מרכזיים

במהלך המעבר לקובצי cookie שחולקו למחיצות, חשוב לזכור את הנקודות הבאות:

  1. אין דרך פרוגרמטית לקבוע אם קובץ cookie מחולקות למחיצות או ללא חלוקה למחיצות. עם זאת, אפשר לקבוע של קובץ ה-Cookie למחיצות (Partitions) בכלי הפיתוח ל-Chrome.
  2. קובצי cookie מחולקים למחיצות לא מבטלים קובצי cookie ללא חלוקה למחיצות – שני קובצי cookie זהים בדיוק (כלומר, מכילים אותם מאפיינים כמו שם, דומיין או נתיב) המערכת תתייחס לקובצי Cookie נפרדים אם רק לאחד מהם יש את המאפיין Partitioned.
  3. כדאי להימנע ממצב שבו גם יהיו חלוקה למחיצות וקובץ Cookie ללא חלוקה למחיצות, באותו שם שמוחזר אותה שיחת רשת.

פג התוקף של קובצי ה-cookie להחלפה

אם לא ניתן לאפשר שינוי שם באתר או בשירות, אפשר ליצור קובץ Cookie חדש שפוצל למחיצות בזמן שפג התוקף של קובץ ה-cookie הקיים ללא המחיצות. בזמן אין דרך לקבוע אם קובץ cookie מחולק למחיצות, Set-Cookie כותרות ללא מאפיין Partitioned לא ישפיעו על קובצי cookie שאינם מופרדים למחיצות.

בדוגמה הבאה אפשר לראות איך יפוג התוקף של קובץ ה-cookie ללא חלוקה למחיצות שנקרא example, ולהשאיר את כל קובצי ה-cookie שחולקים למחיצות ללא השפעה, גם אם יש להם אותו שם. חדש קובץ Cookie עם חלוקה למחיצות בשם cookieName יתווסף או יעודכן אם הוא כבר קיים.

Set-Cookie: example=-1;HttpOnly;SameSite=None;Secure;Max-Age:0
Set-Cookie: cookieName=value;Secure;SameSite=None;MaxAge=34560000;Partitioned

שינוי השם של קובצי ה-cookie

הדרך החזקה ביותר כדי להבטיח מעבר חלק היא להשתמש שמות שונים לקובצי ה-cookie עם חלוקה למחיצות ולא למחיצות. לדוגמה, אם יש לכם קובץ Cookie ללא המחיצות שנקרא "example", אפשר להעביר אותו עם חלוקה למחיצות.

Set-Cookie: example-partitioned=value;Secure;SameSite=None;MaxAge=34560000;Partitioned

מאחר שתוקף קובץ ה-cookie לא נחשף באופן פרוגרמטי, אין דרך להגדיר את תאריך התפוגה של קובץ ה-cookie החדש כך לחפוף עם הנתונים על התוקף של קובץ ה-Cookie. ייתכן שזה יהיה פרגמטי לרענן את הערך של קובץ ה-cookie בתהליך הזה.

ניהול קובצי cookie עם חלוקה למחיצות (partitioning) וגם ללא חלוקה למחיצות

במהלך תקופת המעבר, מומלץ לשמור שני קובצי cookie מסונכרנים נפרדים: שמחולק למחיצות ואחד שלא. לדוגמה, ייתכן שיש לכם את שתי האפשרויות auth ו-auth-partitioned קובצי cookie, כאשר הקובץ השני הוגדר עם מאפיין Partitioned.

בכל פעם שהערך מתעדכן, יש לנסות להגדיר את שני קובצי ה-cookie.

  • בלקוחות שחוסמים קובצי cookie של צד שלישי אבל עדיין לא תומכים ב-CHIPS: אף אחד מקובצי ה-cookie לא יתקבל.
  • בלקוחות שחוסמים קובצי cookie של צד שלישי ותומכים ב-CHIPS: הפונקציה auth יידחה, אבל קובץ ה-cookie auth-partitioned יתקבל.
  • אצל לקוחות שלא חוסמים קובצי cookie של צד שלישי, בין אם הם תומכים בצ'יפים: מקבלים גם auth וגם auth-partitioned.

כשהאפליקציה צריכה לקרוא את קובץ ה-cookie לאימות, צריך לחפש קודם עבור auth-partitioned; אבל אם צריך לבטל באופן זמני את השינויים , אפשר לחזור לחיפוש קובץ ה-cookie של auth.

לאחר שבודקים שרוב המשתמשים קובצי ה-Cookie שלהם מתרעננים, קובץ ה-Cookie של auth-partitioned עלול לצאת משימוש ניתן להוסיף מאפיין עם חלוקה למחיצות לקובץ ה-cookie הרגיל של האימות.