فضای ذخیره‌سازی و کوکی‌ها

افزونه‌ها می‌توانند کوکی‌ها را ذخیره کنند و به روشی مشابه وب‌سایت‌های معمولی به «میاناهای برنامه‌سازی کاربردی فضای ذخیره‌سازی وب» دسترسی داشته باشند. بااین‌حال، در برخی‌از موارد، این‌ها در افزونه‌ها عملکرد متفاوتی دارند.

برای کسب اطلاعات درباره «میانای برنامه‌سازی کاربردی افزونه»، به browser.storage مراجعه کنید.

فضای ذخیره‌سازی

اغلب مطلوب است که از میاناهای برنامه‌سازی کاربردی فضای ذخیره‌سازی پلاتفرم وب در افزونه‌ها استفاده شود. این بخش رفتار این «میاناهای برنامه‌سازی کاربردی» را در زمینه افزونه بررسی می‌کند که گاهی اوقات با نحوه عملکرد آن‌ها در وب متفاوت است.

ماندگاری

وقتی کاربر داده‌های مرور را پاک می‌کند، فضای ذخیره‌سازی افزونه پاک نمی‌شود. این امر برای هر داده‌ای که بااستفاده از Web Storage APIs (مثل Local Storage و IndexedDB) ذخیره شده باشد اعمال می‌شود.

به‌طور پیش‌فرض، افزونه‌ها مشمول محدودیت‌های سهمیه عادی در فضای ذخیره‌سازی هستند که می‌توان با تماس گرفتن با navigator.storage.estimate() آن‌ها را بررسی کرد. فضای ذخیره‌سازی همچنین می‌تواند تحت فشار حافظه سنگین تخلیه شود، اگرچه این اتفاق نادر است. برای جلوگیری از این مشکل:

  • اجازه "unlimitedStorage" را درخواست کنید که هم بر میاناهای برنامه‌سازی کاربردی ذخیره‌سازی وب و هم بر افزونه تأثیر می‌گذارد و افزونه‌ها را از محدودیت‌های سهمیه و تخلیه معاف می‌کند.
  • برای محافظت دربرابر تخلیه، با navigator.storage.persist() تماس بگیرید.

فضای ذخیره‌سازی افزونه در سراسر مبدأ افزونه ازجمله کارگر سرویس افزونه، هر صفحه افزونه (ازجمله بالاپَرها و پانل کناری)، و اسناد خارج از صفحه هم‌رسانی می‌شود. در متن‌های محتوا، فراخوانی APIهای فضای ذخیره‌سازی وب به داده‌های صفحه میزبان که متن محتوا در آن تزریق شده است دسترسی پیدا می‌کند و نه افزونه.

دسترسی در عاملان خدماتی

میاناهای برنامه‌سازی کاربردی IndexedDB و Cache Storage در کارگران خدمات دردسترس هستند. بااین‌حال، فضای ذخیره‌سازی محلی و فضای ذخیره‌سازی جلسه این‌گونه نیستند.

اگر نیاز دارید از کارگزار سرویس به «فضای ذخیره‌سازی محلی» یا «فضای ذخیره‌سازی جلسه» دسترسی داشته باشید، از سند خارج از صفحه استفاده کنید.

پارتیشن‌بندی

در پارتیشن‌بندی، کلیدهایی برای داده‌های ذخیره‌شده معرفی می‌شود تا مکان دسترسی به آن‌ها محدود شود. ذخیره‌سازی ازنظر تاریخی براساس مبدأ کلیدگذاری شده است.

از Chrome 115 به بعد، جداسازی فضای ذخیره‌سازی تغییراتی در نحوه تعریف کلیدهای جداسازی برای جلوگیری از انواع خاصی از ردیابی بین‌سایتی ایجاد می‌کند. در عمل، این به این معنی است که اگر سایت A یک iframe حاوی سایت B را جاسازی کند، سایت B نمی‌تواند به همان فضای ذخیره‌سازی که معمولاً هنگام پیمایش مستقیم به آن دسترسی دارد، دسترسی پیدا کند.

برای کاهش تأثیر این موضوع در افزونه‌ها، دو معافیت اعمال می‌شود:

  • اگر صفحه‌ای با طرحواره chrome-extension:// در سایتی جاسازی شود، تفکیک فضای ذخیره‌سازی اعمال نخواهد شد و افزونه به پارتیشن سطح بالای خود دسترسی خواهد داشت.
  • اگر صفحه‌ای با طرحواره chrome-extension:// شامل iframe باشد و افزونه برای سایتی که جاسازی می‌کند اجازه‌های میزبان داشته باشد، آن سایت نیز به پارتیشن سطح بالای خود دسترسی خواهد داشت.

بیسکوئیت

کوکی‌ها روشی برای ذخیره جفت‌های کلید-مقدار مرتبط با یک دامنه و مسیر خاص ارائه می‌دهند. این متغیرها در افزونه‌ها ارزش محدودی دارند اما اگر مورد استفاده خاصی داشته باشید یا یک دستورگان طرف سوم را که از آن‌ها در پیاده‌سازی‌اش استفاده می‌کند دسته‌بندی کرده باشید، درک رفتار آن‌ها می‌تواند مفید باشد.

کوکی‌های امن

شاخصه کوکی Secure فقط برای طرح https:// پشتیبانی می‌شود. درنتیجه، chrome-extension:// صفحه نمی‌توانند کوکی‌ها را با این مشخصه تنظیم کنند.

این همچنین به این معنی است که صفحه‌های افزونه نمی‌توانند از دیگر مشخصه‌های کوکی که در آن‌ها مشخصه Secure الزامی است استفاده کنند:

بخش‌بندی و رفتار SameSite

کوکی‌های تنظیم‌شده در صفحه‌های chrome-extension:// همیشه از SameSite=Lax استفاده می‌کنند. در نتیجه، کوکی‌هایی که افزونه در مبدأ خود تنظیم می‌کند هرگز نمی‌تواند در قاب‌ها قابل‌دسترسی باشد و تقسیم‌بندی مرتبط نیست.

برای کوکی‌های مرتبط با سایت‌های طرف سوم، مثلاً برای سایت طرف سومی که در چارچوبی در صفحه افزونه بار شده است، یا درخواستی که از صفحه افزونه به مبدأ طرف سوم ارسال شده است، کوکی‌ها همانند وب عمل می‌کنند، به‌جز در دو مورد:

  • کوکی‌های طرف سوم هرگز مسدود نمی‌شوند، حتی در زیرقاب‌ها، اگر صفحه سطح بالا برای یک برگه معین صفحه chrome-extension:// باشد.
  • درخواست‌های افزونه از طرف سوم درصورتی به‌عنوان هم‌سایت درنظر گرفته می‌شود که افزونه برای طرف سوم مجوزهای میزبان داشته باشد. یعنی SameSite=Strict کوکی می‌تواند ارسال شود. توجه داشته باشید که این فقط برای درخواست‌های شبکه اعمال می‌شود، نه دسترسی ازطریق document.cookie در جاوا اسکریپت، و اگر کوکی‌های طرف سوم مسدود شده باشند اعمال نمی‌شود.

توجه داشته باشید که تنظیمات مربوط به کوکی‌های طرف سوم تحت تأثیر کار «جعبه امن حریم خصوصی» قرار می‌گیرد و براساس جدول زمانی آن تنظیم می‌شود.

میانای برنامه‌سازی کاربردی browser.cookies کنترل کلید پارتیشن را برای استفاده با هر روش میانای برنامه‌سازی کاربردی فراهم می‌کند. برای اطلاعات بیشتر، به مرجع میانای برنامه‌سازی کاربردی مراجعه کنید.