חלוקה של חלונות קופצים: גישה חדשה לחלונות קופצים באינטרנט בגרסת הניסיון למפתחים

Natalia Markoborodova
Natalia Markoborodova

החל מגרסה 132 של Chrome, מפתחים יכולים להשתתף בתוכנית ניסוי למפתחים כדי לנסות גישה חדשה לחלונות קופצים באינטרנט: חלונות קופצים מחולקים. תקופת הניסיון למפתחים זמינה רק למחשב, והתכונה עדיין לא זמינה ב-Android.

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

למה צריך חלוקה של חלונות קופצים?

חלונות קופצים מחולקים מיועדים לשמירה על מאפייני הפרטיות של iframe מחולק ועל מאפייני האבטחה של חלונות קופצים.

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

איך פועלים חלוקות של חלונות קופצים?

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

נניח שאתר opener.example מטמיע תוכן מ-third-party.example. כדי להציג תוכן מותאם אישית ב-opener.example, המשתמש צריך להיכנס לחשבון ב-third-party.example. כשקובצי cookie של צד שלישי חסומים בדפדפן של המשתמש, תהליך ההצגה הנוכחי של חלונות קופצים הוא:

  1. המשתמש לוחץ על לחצן התחברות.
  2. תיפתח תיבת דו-שיח.
  3. המשתמש נכנס לחשבון מההקשר ברמה העליונה של third-party.example, ונכתב קובץ cookie לא מאוחד לאימות.
  4. לתוכן של third-party.example שמוטמע ב-opener.example אין גישה לקובצי cookie ברמה העליונה שלו שנכתבו ב-third-party.example כשהתוכן הוצג בהקשר של צד ראשון. הסיבה לכך היא שקובץ ה-cookie לא מחולק למחיצות, ולכן הוא נחשב כקובץ cookie של צד שלישי.
תהליך אימות משתמש בחלון קופץ שבו iframe מ-'third-party.example' מוטמע ב-'opener.example', ו-'third-party.example' נפתח בחלון קופץ. ל-iframe אין גישה לקובץ cookie משלו ללא חלוקה למחיצות, כי קובץ ה-cookie הוגדר בהקשר ברמה העליונה של חלון קופץ מסוג 'third-party.example'.
תהליך חלון קופץ: למסגרת ה-iframe של third-party.example שמוטמעת ב-opener.example אין גישה לקבוצת קובצי cookie משלה ללא חלוקה למחיצות בהקשר ברמה העליונה של חלון הקופץ third-party.example.

האחסון של חלון קופץ מחולק למחיצות (partitioning) לפי הגורם שפותח אותו. הפעולה הזו משנה את השלבים 3-4 בתהליכים:

  1. המשתמש מתחבר מההקשר ברמה העליונה של third-party.example. מכיוון שהחלון פתוח בחלון קופץ מפוצל, האחסון מחולק לפי opener.example.

  2. לתוכן third-party.example שמוטמע ב-opener.example יש גישה לקובץ ה-cookie שלו שהוגדר בחלון הקופץ, כי הם משתפים את אותו אחסון מפולח.

תהליך אימות משתמש בחלוקה לפלחים בחלון קופץ. חלון קופץ מ-'third-party.example' נפתח ב-'opener.example'. לרכיב iframe בתוך חלון הקופץ הזה יש גישה לקובצי cookie שהוגדרו על ידי ההקשר ברמה העליונה של 'third-party.example'
תהליך של חלוקה למחיצות בחלונות קופצים: ל-iframe‏ third-party.example שמוטמע ב-opener.example יש גישה לקובץ cookie משלו עם חלוקה למחיצות, שמוגדר בהקשר ברמת העליונה של חלון הקופץ third-party.example, כי קובץ ה-cookie מחולק למחיצות על ידי opener.example.

חלוקת חלונות קופצים לקטעים נועדה לעזור למשתמש להבין שהדף הפותח והחלון הקופץ קשורים זה לזה:

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

רוצה לנסות?

ב-Chrome 132 אנחנו משיקים תקופת ניסיון למפתחים עבור התכונה 'חלוקה למחיצות בחלונות קופצים'. כלומר, התכונה תהיה זמינה רק אחרי הפעלת דגל. כך אפשר לנסות חלוקה של חלונות קופצים:

  1. חשוב לוודא שאתם משתמשים ב-Chrome מגרסה 132 ואילך.
  2. עוברים אל chrome://flags#partitioned-popins ומפעילים את ה-feature flag.
  3. מפעילים מחדש את Chrome.
  4. כדאי לנסות את ההדגמה שלנו.

שימוש בחלוקה של חלונות קופצים באתר

כדי להשתמש בחלון קופץ מפולח באתר, צריך להפעיל את השיטה window.open() עם הפרמטר popin:

window.open("third-party-popin.example", "_blank", "popin");

שיתוף משוב

אנחנו בודקים את האפשרות של חלוקה של חלונות קופצים, ומחפשים משוב ממפתחים. ריכזנו כאן כמה תרחישים לדוגמה:

  • תהליך אימות המשתמש. אם הטמעתם תהליך אימות מותאם אישית והאימות מתבצע בדומיין שונה מהאתר שלכם (לדוגמה, משתמשי site.example נכנסים לחשבון ב-auth-site.example), נסו לפתוח את דף האימות בחלון קופץ כדי להשתמש בקובץ ה-cookie של הסשן בדף הפותח.
  • תוכן מוטמע כדאי לנסות חלונות קופצים מחולקים כדי להציג תוכן נוסף מווידג'ט של צד שלישי, כמו תיבת דו-שיח של הגדרות, תמונה או קובץ PDF (או תוכן אחר שנטען בדרך כלל בחלון קופץ), שעבר רינדור בחלון גדול יותר. במקרה כזה, חלוקה של חלונות קופצים נועדה לשמור את מצב הסשן של המשתמש בין הווידג'ט של הצד השלישי לבין האתר שלכם.

אם אחד מהתרחישים האלה רלוונטי לפתרון שלכם, אם יש לכם תרחישי שימוש אחרים או אם אתם רוצים לעזור לנו לעצב את העתיד של התכונה הזו, נסו אותה ואל תשכחו לעדכן אותנו:

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

אתם יכולים לשלוח בקשה בנושא ב-GitHub כדי לשתף את דעתכם.