ערך חדש של allow-same-site-none-cookies בארגז חול מ-Chrome 135

Natalia Markoborodova
Natalia Markoborodova

החל מגרסה 135 של Chrome, אפשר להשתמש בערך החדש של sandbox: allow-same-site-none-cookies. כשמציינים את המדיניות הזו וקובצי cookie של צד שלישי לא זמינים, הדפדפן ישלח קובצי cookie מסוג SameSite=None רק בבקשות HTTP שמקורן ב-iframes בצד ראשון ב-sandbox.

מהו iframe ב-sandbox?

מסגרות iframe ב-sandbox הן מסגרות iframe עם הגבלות מיוחדות. הם נחשבים כבעלים של מקור null,‏ אטום. כברירת מחדל, תכונות שעלולות להזיק, כמו סקריפטים, טפסים וקופצויות, לא זמינות ב-iframes בארגז חול.

אפשר להשתמש במאפיין sandbox כדי לציין אילו תכונות צריכות להיות זמינות ב-iframe בארגז החול. לדוגמה:

 <iframe sandbox="allow-scripts" src="example-sandboxed-frame.html"/>

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

למה אנחנו צריכים את המדיניות החדשה הזו?

לפני ההשקה של allow-same-site-none-cookies, אפשר היה להגדיר שני תרחישים של קובצי cookie בתוך iframe ב-sandbox:

  • בלי האסימון allow-same-origin במאפיין sandbox, המקור של ה-iframe מומר לסדרה בתור null, כך שכל הבקשות מהדף ב-sandbox נשלחות בין אתרים. במקרה כזה, רק קובצי cookie עם SameSite=None ייכללו בבקשות.
  • כשמשתמשים באסימון allow-same-origin במאפיין sandbox, המערכת מתייחסת לבקשות כאילו הן מגיעות מהמקור האמיתי של ה-iframe, ומאפשרת לשלוח קובצי cookie עם כל ערך של SameSite.

אם קובצי ה-cookie של צד שלישי חסומים, תיבה מסוג iframe ב-sandbox ללא allow-same-origin לא יכולה לשלוח קובצי cookie, אלא אם מפעילים את allow-same-site-none-cookies.

עדיין תהיה אפשרות לכלול קובצי cookie בבקשות באותו אתר ב-iframe עם allow-same-origin, גם כשקובצי cookie של צד שלישי חסומים. עם זאת, כל קובצי ה-cookie של המקור יהיו חשופים לפעילות אינטרנט שעלולה להיות זדונית.

בעזרת allow-same-site-none-cookies, iframe יכול לשלוח קובצי cookie מסוג SameSite=None בבקשות HTTP, אבל קובצי cookie מסוג SameSite=Strict ו-SameSite=Lax שעשויים להיות רגישים לא ייכללו.

דוגמה מעשית

נניח שיש אתר, practice-coding.example, שמאפשר למשתמשים ליצור פרויקטים של קוד בהתאמה אישית ולהטמיע קוד של משתמשים אחרים. כדי להשתמש בשירות, המשתמשים צריכים להיכנס לחשבון, וכתוצאה מכך מוגדר קובץ cookie של סשן SameSite=Strict.

משתמש אחר יוצר פרויקט, practice-coding.example/cookie-theft, שמשתמשים אחרים יכולים להטמיע ללא ידיעתם כ-iframe בפרויקטים שלהם. אם קובצי ה-cookie SameSite=Strict ו-SameSite=Lax חשופים ל-iframe של practice-coding.example/cookie-theft, המשתמש הזדוני יכול לגנוב קובצי cookie של סשנים של משתמשים אחרים.

בתרחיש כזה, יכול להיות שבעלי האתר ירצו להגביל את הגישה לקובצי cookie שעשויים להכיל מידע אישי רגיש. עם זאת, יכול להיות שהם עדיין רוצים לאפשר קובצי cookie של SameSite=None בתוך iframes ב-sandbox. לדוגמה, יכול להיות שpractice-coding.example/coding-interview iframe ב-sandbox יצטרך קובצי SameSite=None cookie כדי לאפשר למועמדים לחזור לקוד שלהם. allow-same-site-none-cookies מונע חשיפת כל קובצי ה-cookie ומאפשר באופן סלקטיבי את קובצי ה-SameSite=None הנחוצים.

איך מאפשרים רק SameSite=None בתוך מסגרות ב-sandbox מהדומיין הנוכחי?

כדי להפעיל קובצי cookie מסוג SameSite=None בבקשות מדפים מהדומיין הנוכחי שנמצאים בארגז חול, צריך לציין את האסימון allow-same-site-none-cookies בתג ה-iframe. לדוגמה:

 <iframe sandbox="allow-same-site-none-cookies" src="example-sandboxed-page.html"/>

אפשר גם להגדיר מדיניות allow-same-site-none-cookies עם כותרת HTTP‏ Content-Security-Policy:

Content-Security-Policy: sandbox allow-same-site-none-cookies;

אתם יכולים לנסות זאת בעצמכם באמצעות הדגמה שלנו.

יצירת מעורבות ושיתוף משוב

אתם יכולים לשלוח דיווח כדי לשתף משוב או לדווח על בעיות, או להצטרף לשיחה ב-GitHub.