אחסון וקובצי cookie

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

מידע על ה-API של התוסף זמין במאמר browser.storage.

אחסון

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

התמדה

האחסון של התוסף לא מתנקה כשמשתמש מנקה את נתוני הגלישה. הדבר תקף לכל הנתונים שאוחסנו באמצעות ממשקי API של אחסון באינטרנט (כמו Local Storage ו-IndexedDB).

כברירת מחדל, התוספים כפופים להגבלות הרגילות של המכסות על נפח האחסון, שאפשר לבדוק אותן באמצעות קריאה ל-navigator.storage.estimate(). במקרים נדירים, יכול להיות שגם נפח האחסון יוקצה מחדש אם יש עומס רב על הזיכרון. כדי להימנע מכך:

  • מבקשים את ההרשאה "unlimitedStorage", שמשפיעה על ממשקי API של אחסון תוספים ואחסון אתרים, ופוטרת את התוספים מהגבלות מכסה ומפינוי.
  • כדי לקבל הגנה מפני פינוי, אפשר להתקשר למספר navigator.storage.persist().

נפח האחסון של התוסף משותף לכל המקורות של התוסף, כולל קובץ השירות (service worker) של התוסף, כל דפי התוסף (כולל חלונות קופצים וחלונית הצד) ומסמכים מחוץ למסך. בסקריפטים של תוכן, קריאה לממשקי API של אחסון אינטרנט מאפשרת גישה לנתונים מדף המארח שהסקריפט של התוכן מוחדר אליו, ולא מהתוסף.

גישה בקובצי שירות (service worker)

אפשר לגשת לממשקי ה-API‏ IndexedDB ו-Cache Storage ב-service workers. עם זאת, Local Storage ו-Session Storage לא נכללים.

אם אתם צריכים לגשת ל-Local Storage או ל-Session Storage מתוך service worker, אתם יכולים להשתמש במסמך מחוץ למסך.

חלוקה למחיצות

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

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

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

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

קובצי Cookie

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

קובצי Cookie מאובטחים

מאפיין הקובץ ה-Cookie‏ Secure נתמך רק בסכימה https://. לכן, דפי chrome-extension:// לא יכולים להגדיר קובצי Cookie באמצעות המאפיין הזה.

המשמעות היא שדפי הרחבות לא יכולים להשתמש במאפיינים אחרים של קובצי Cookie שבהם נדרש המאפיין Secure:

חלוקה למחיצות (partitioning) והתנהגות SameSite

קובצי Cookie שמוגדרים בדפים chrome-extension:// ‎ תמיד משתמשים ב-SameSite=Lax. לכן, אי אפשר לגשת לקובצי Cookie שמוגדרים על ידי תוסף במקור שלו בתוך מסגרות, והחלוקה למחיצות לא רלוונטית.

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

  • קובצי Cookie של צד שלישי אף פעם לא נחסמים, גם לא במסגרות משנה, אם הדף ברמה העליונה בכרטיסייה נתונה הוא דף chrome-extension://.
  • בקשות מתוסף לצד שלישי נחשבות כבקשות מאותו אתר אם לתוסף יש הרשאות מארח לצד השלישי. כלומר, אפשר לשלוח SameSite=Strict קובצי Cookie. הערה: ההרשאה הזו חלה רק על בקשות רשת, ולא על גישה דרך document.cookie ב-JavaScript. היא גם לא חלה אם קובצי Cookie של צד שלישי חסומים.

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

‫API‏ browser.cookies מאפשר לשלוט במפתח החלוקה שבו משתמשים בכל method של API. מידע נוסף מופיע במאמרי העזרה של ה-API.