גרסת מקור של iframe אנונימי: הטמעה קלה של מסגרות iframe בסביבות COEP

ארתור סונזוגני
ארתור סונזוגני

מפתחים שמשתמשים ב-COEP יכולים כעת להטמיע מסגרות iframe של צד שלישי שלא משתמשים ב-COEP בעצמם.

למה אנחנו צריכים COEP

חלק מממשקי ה-API לאינטרנט מגבירים את הסיכון להתקפות בערוץ צדדי כמו Spectre. כדי למזער את הסיכון, דפדפנים מציעים סביבה מבודדת שמבוססת על הסכמה שנקראת בידוד בין מקורות. בין היתר, צריך לפרוס COEP. כך אתרים יכולים להשתמש בתכונות מזכות כולל SharedArrayBuffer, performance.measureUserAgentSpecificMemory() וטיימרים ברמת דיוק גבוהה עם רזולוציה טובה יותר.

כדי להפעיל בידוד בין מקורות, אתרים חייבים לשלוח את שתי כותרות ה-HTTP הבאות:

Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin

האתגרים בהפעלת COEP

בידוד בין מקורות מגביר את האבטחה של דפי האינטרנט ואת היכולת להפעיל תכונות מתקדמות, אבל פריסת COEP יכולה להיות קשה. אחד מהאתגרים הגדולים ביותר הוא שכל מסגרות ה-iframe ממקורות שונים צריכות גם לפרוס COEP ו-CORP. Iframes בלי הכותרות האלה לא ייטענו על ידי הדפדפן.

בדרך כלל השימוש ב-iframes נעשה על ידי צד שלישי שלא קל לפרוס COEP.

iframe אנונימי להצלה

כאן נכנס לתמונה iframe אנונימי. כשמוסיפים את המאפיין anonymous לרכיב <iframe>, ה-iframe נטען ממחיצה זמנית של אחסון, שכבר לא חלות עליו הגבלות COEP.

דוגמה:

<iframe anonymous src="https://example.com">

ה-Iframe נוצר בהקשר זמני חדש, ואין לו גישה לאף אחד מקובצי ה-cookie שמשויכים לאתר ברמה העליונה. הוא מתחיל בצנצנת ריקה של קובצי cookie. באופן דומה, ממשקי API לאחסון כמו LocalStorage, CacheStorage, IndexedDB וכו', טוענים ומאחסנים נתונים במחיצה הזמנית החדשה. המחיצה מוגבלת למסמך הנוכחי ברמה העליונה ולמקור ה-iframe. האחסון יתפנה אחרי שהעלאת המסמך ברמה העליונה תבוטל.

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

הדגמה (דמו)

תוכלו לראות את ה-iframe האנונימי בכתובת: https://anonymous-iframe.glitch.me/

הרשמה לגרסת המקור לניסיון

כדי לוודא שמסגרות iframe אנונימיות עוזרות למפתחים לאמץ בידוד בין מקורות, אנחנו מגדירים אותן כזמינות ב-Chrome בגרסאות 106 עד 108 כגרסת מקור לניסיון.

עליכם להירשם לגרסת המקור לניסיון כדי לאפשר לאתר שלכם להשתמש במסגרות iframe אנונימיות:

  1. מבקשים אסימון למקור.
  2. אפשר להשתמש באסימון באחת מהדרכים הבאות:
    • ב-HTML: html <meta http-equiv="Origin-Trial" content="TOKEN_GOES_HERE">
    • ב-JavaScript: js const meta = document.createElement('meta'); meta.httpEquiv = 'Origin-Trial'; meta.content = 'TOKEN_GOES_HERE'; document.head.append(meta);
    • בכותרות ה-HTTP: text Origin-Trial: TOKEN_GOES_HERE
  3. מוסיפים iframe אנונימי לדף: html <iframe anonymous src="https://example.com">

אם יש לכם משוב על התכונה הזו, תוכלו לדווח על בעיה במאגר של GitHub.

גרסת מקור לניסיון של צד שלישי

גרסת המקור לניסיון זמינה גם לסקריפטים של צד שלישי. זה אומר שאפשר להפעיל אותו באמצעות סקריפטים שמוטמעים בדף.

למידע נוסף על הרשמה לגרסת מקור לניסיון של צד שלישי.

שאלות נפוצות

האם דפדפנים אחרים ישתמשו בתכונה הזו?

האם מסגרות iframe מוטמעות בתוך <iframe anonymous> באופן אנונימי?

כן. היא עוברת בירושה. כשמסגרת iframe אנונימית, היא חלה על כל ה-iframes בכל עץ המשנה, גם בלי המאפיין anonymous.

האם נוצרים חלונות קופצים מ-<iframe anonymous> גם אנונימיים?

החלונות הקופצים נפתחים כאילו הוגדר noopener. הם נוצרים מתוך הקשר חדש ורגיל ברמה העליונה, והם אינם אנונימיים. הם לא יכולים לתקשר עם ה-iframe האנונימי.

משאבים