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

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

מידע על ממשק ה-API של התוסף זמין בכתובת chrome.storage.

אחסון

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

התמדה

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

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

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

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

גישה ב-Service Workers

ממשקי ה-API של IndexedDB ו-Cloud Storage נגישים ב-Service Workers. עם זאת, אחסון מקומי ואחסון של סשן לא משתנים.

אם אתם צריכים לגשת לאחסון מקומי או לאחסון סשן מה-Service Worker, השתמשו במסמך מחוץ למסך.

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

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

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

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

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

עוגיות

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

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

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

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

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

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

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

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

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

ה-API של chrome.cookies מאפשר שליטה על מפתח החלוקה לשימוש בכל שיטת API. למידע נוסף, קראו את הפניית API.