החל מגרסה 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.