به توسعهدهندگان اجازه دهید تا یک کوکی را در فضای ذخیرهسازی «پارتیشنبندیشده» انتخاب کنند، با یک ظرف کوکی جداگانه در هر سایت سطح بالا.
وضعیت پیاده سازی
- به طور پیش فرض در Chrome 114 و بالاتر پشتیبانی می شود.
- نسخه آزمایشی اصلی، که اکنون کامل شده است، از Chrome 100 تا 116 در دسترس بود.
- Intent to Experiment و Intent to Ship را بخوانید.
چیپس چیست؟
کوکیهای دارای حالت پارتیشنبندی شده مستقل (CHIPS) به توسعهدهندگان اجازه میدهد تا یک کوکی را در فضای ذخیرهسازی پارتیشنبندی شده، با شیشههای کوکی مجزا در هر سایت سطح بالا انتخاب کنند، که حریم خصوصی و امنیت کاربر را بهبود میبخشد.
بدون پارتیشن بندی، کوکی های شخص ثالث می توانند سرویس ها را برای ردیابی کاربران و پیوستن اطلاعات آنها از بسیاری از سایت های سطح بالای نامرتبط فعال کنند. این به عنوان ردیابی متقابل سایت شناخته می شود.
CHIPS، Storage Access API و مجموعههای وبسایت مرتبط تنها راه خواندن و نوشتن کوکیها از زمینههای بین سایتی، مانند iframes، زمانی که کوکیهای شخص ثالث مسدود هستند، هستند.
CHIPS یک ویژگی کوکی جدید Partitioned
را برای پشتیبانی از کوکیهای بین سایتی که بر اساس بافت سطح بالا تقسیم میشوند، معرفی میکند.
هدر Set-Cookie:
Set-Cookie: __Host-name=value; Secure; Path=/; SameSite=None; Partitioned;
جاوا اسکریپت:
document.cookie="__Host-name=value; Secure; Path=/; SameSite=None; Partitioned;"
یک کوکی شخص ثالث پارتیشن بندی شده به سایت سطح بالایی که در ابتدا تنظیم شده است گره خورده است و از جای دیگری قابل دسترسی نیست. به این ترتیب کوکی های تنظیم شده توسط یک سرویس شخص ثالث را فقط می توان در همان زمینه جاسازی شده سایت سطح بالا که در ابتدا تنظیم شده بود، خواند.
با کوکی های پارتیشن بندی شده، وقتی کاربر از سایت A بازدید می کند و محتوای جاسازی شده از سایت C یک کوکی با ویژگی پارتیشن بندی شده تنظیم می کند، کوکی در یک شیشه پارتیشن بندی شده ذخیره می شود که فقط برای کوکی هایی که سایت C هنگام جاسازی در سایت A تنظیم می کند، ذخیره می شود. تنها زمانی آن کوکی را ارسال می کند که سایت سطح بالا A باشد.
هنگامی که کاربر از یک سایت جدید بازدید می کند، به عنوان مثال سایت B، یک فریم جاسازی شده C کوکی را که در زمان جاسازی C در سایت A تنظیم شده بود، دریافت نمی کند.
اگر کاربر از سایت C به عنوان یک وب سایت سطح بالا بازدید کند، کوکی پارتیشن بندی شده ای که C در زمان جاسازی آن در A تنظیم کرده است نیز در آن درخواست ارسال نمی شود.
موارد استفاده کنید
به عنوان مثال، سایت retail.example
ممکن است بخواهد با یک سرویس شخص ثالث support.chat.example
کار کند تا جعبه گفتگوی پشتیبانی را در سایت خود جاسازی کند. امروزه بسیاری از سرویسهای چت قابل جاسازی برای ذخیره وضعیت به کوکیها متکی هستند.
بدون توانایی تنظیم یک کوکی بین سایتی، support.chat.example
باید روشهای جایگزین، اغلب پیچیدهتر، را برای ذخیره وضعیت پیدا کند. از طرف دیگر، باید در صفحه سطح بالایی که خطرات را معرفی میکند جاسازی شود، زیرا به اسکریپت support.chat.example
اجازه میدهد تا امتیازات بالایی در retail.example داشته باشد، مانند امکان دسترسی به کوکیهای احراز هویت.
CHIPS گزینه سادهتری برای ادامه استفاده از کوکیهای بین سایتی بدون خطرات مرتبط با کوکیهای پارتیشن نشده فراهم میکند.
نمونههایی از موارد استفاده برای تراشهها شامل هر سناریوهایی است که در آن منابع فرعی بین سایتی نیاز به مفهومی از جلسه یا حالت پایدار دارند که به فعالیت کاربر در یک سایت سطح بالا اختصاص دارد، مانند:
- جاسازی های چت شخص ثالث
- نقشه های شخص ثالث جاسازی می شود
- تعبیههای پرداخت شخص ثالث
- تعادل بار CDN منبع فرعی
- ارائه دهندگان CMS بدون سر
- دامنههای جعبه ایمنی برای ارائه محتوای غیرقابل اعتماد کاربر (مانند googleusercontent.com و githubusercontent.com)
- CDN های شخص ثالث که از کوکی ها برای ارائه محتوایی استفاده می کنند که توسط وضعیت احراز هویت در سایت شخص اول کنترل می شود (به عنوان مثال، تصاویر نمایه در سایت های رسانه های اجتماعی میزبانی شده در CDN های شخص ثالث)
- فریمورکهای فرانتاند که به APIهای راه دور با استفاده از کوکیها در درخواستهایشان متکی هستند
- تبلیغات جاسازی شده که نیاز به محدوده وضعیت به ازای هر ناشر دارند (به عنوان مثال، گرفتن تنظیمات برگزیده تبلیغات کاربران برای آن وب سایت)
چرا CHIPS از یک مدل پارتیشن بندی انتخابی استفاده می کند؟
در جایی که دسترسی به کوکی های شخص ثالث پارتیشن بندی نشده مسدود شده است، چند روش دیگر برای پارتیشن بندی انجام شده است.
فایرفاکس اعلام کرد که تمام کوکیهای شخص ثالث را بهطور پیشفرض در حالت ETP Strict و حالت مرور خصوصی خود پارتیشن بندی میکنند، بنابراین همه کوکیهای بین سایتی توسط سایت سطح بالا پارتیشن بندی میشوند. با این حال، پارتیشن بندی کوکی ها بدون انتخاب شخص ثالث می تواند منجر به اشکالات غیرمنتظره شود، زیرا برخی از سرویس های شخص ثالث سرورهایی ساخته اند که انتظار یک کوکی شخص ثالث پارتیشن نشده را دارند.
Safari قبلاً کوکیها را بر اساس اکتشافی پارتیشن بندی کرده بود ، اما در نهایت تصمیم گرفت آنها را به طور کامل مسدود کند و سردرگمی توسعه دهندگان را یکی از دلایل ذکر کرد. اخیراً، سافاری به یک مدل مبتنی بر انتخاب نشان داده است .
چیزی که CHIPS را از پیاده سازی های موجود کوکی های پارتیشن بندی شده متمایز می کند، انتخاب شخص ثالث است. کوکیها باید با یک ویژگی جدید تنظیم شوند تا پس از منسوخ شدن کوکیهای شخص ثالث (غیرپارتیشننشده) در درخواستهای بین شخص ارسال شوند.
در حالی که کوکیهای شخص ثالث هنوز وجود دارند، ویژگی Partitioned
یک نوع رفتار محدودتر و ایمنتر از کوکیها را انتخاب میکند. CHIPS گام مهمی برای کمک به سرویسها برای انتقال آرام به آینده بدون کوکیهای شخص ثالث است.
طراحی فنی پارتیشن بندی کوکی
امروزه، کوکیها روی نام میزبان یا دامنه سایتی که آنها را تنظیم میکند، کلید میشوند، یعنی کلید میزبان آنها.
برای مثال، برای کوکیهای https://support.chat.example
، کلید میزبان ("support.chat.example")
است.
تحت CHIPS، کوکیهایی که پارتیشنبندی را انتخاب میکنند، روی کلید میزبان و کلید پارتیشن دو کلید میشوند.
کلید پارتیشن یک کوکی ، سایت ( طرح و دامنه قابل ثبت ) URL سطح بالایی است که مرورگر در ابتدای درخواست به نقطه پایانی که کوکی را تنظیم می کند، از آن بازدید می کرد.
در مثال قبلی، جایی که https://support.chat.example
در https://retail.example
تعبیه شده است، URL سطح بالا https://retail.example
است.
کلید پارتیشن در این مورد ("https", "retail.example")
است.
به همین ترتیب، کلید پارتیشن درخواست ، سایت URL سطح بالایی است که مرورگر در ابتدای درخواست از آن بازدید می کند. مرورگرها فقط باید یک کوکی با ویژگی Partitioned
در درخواست هایی با همان کلید پارتیشن آن کوکی ارسال کنند.
در اینجا کلید کوکی در مثال قبلی قبل و بعد از CHIPS به نظر می رسد.
قبل از چیپس
key=("support.chat.example")
بعد از چیپس
key={("support.chat.example"),("https", "retail.example")}
طراحی امنیتی
برای تشویق اقدامات امنیتی خوب، با CHIPS، کوکیها فقط توسط پروتکلهای ایمن تنظیم و ارسال میشوند.
- کوکی های پارتیشن بندی شده باید با
Secure
تنظیم شوند. - توصیه می شود هنگام تنظیم کوکی های پارتیشن بندی شده از پیشوند
__Host-
استفاده کنید تا آنها را به نام میزبان (و نه دامنه قابل ثبت) متصل کنید.
مثال:
Set-Cookie: __Host-example=34d8g; SameSite=None; Secure; Path=/; Partitioned;
جایگزین های چیپس
Storage Access API و مجموعههای وبسایت مرتبط (RWS) مکانیزمهای پلتفرم وب هستند که دسترسی محدود به کوکی بینسایتی را برای مقاصد خاص و با کاربر امکانپذیر میکنند.
اینها جایگزین هایی برای پارتیشن بندی CHIPS هستند که در آن دسترسی به غذاهای بین سایتی و بدون پارتیشن مورد نیاز است.
API دسترسی به فضای ذخیرهسازی و مجموعههای وبسایت مرتبط را در شرایطی در نظر بگیرید که به همان کوکی نیاز دارید تا در سرویسی که در چندین سایت مرتبط تعبیه شده است در دسترس باشد.
CHIPS این قابلیت را فراهم می کند که یک سرویس به عنوان یک مؤلفه ایزوله در چندین سایت عمل کند، جایی که نیازی نیست یک کوکی مشابه در چندین سایت در دسترس باشد. اگر سرویس یک کوکی پارتیشن بندی شده تنظیم کند، کلید پارتیشن آن سایت سطح بالا خواهد بود و آن کوکی برای سایت های دیگری که از این سرویس نیز استفاده می کنند در دسترس نخواهد بود.
طراحی Related Website Sets متکی بر Storage Access API است و با پارتیشن بندی CHIPS ادغام نمی شود. اگر یک مورد استفاده دارید که متکی به یک پارتیشن کوکی مشترک در بین سایتها در RWS است، میتوانید مثالها و بازخوردهایی در مورد مشکل GitHub ارائه دهید .
نسخه ی نمایشی
این نسخه نمایشی نحوه عملکرد کوکی های پارتیشن بندی شده و نحوه بازرسی آنها را در DevTools به شما آموزش می دهد.
سایت A یک iframe از سایت B تعبیه می کند که از جاوا اسکریپت برای تنظیم دو کوکی استفاده می کند: یک کوکی پارتیشن بندی شده و پارتیشن بندی نشده. سایت B تمام کوکی های قابل دسترسی از آن مکان را با استفاده از document.cookie
نمایش می دهد.
وقتی کوکیهای شخص ثالث مسدود میشوند، سایت B فقط میتواند کوکی را با ویژگی Partitioned
در زمینه بینسایتی تنظیم کرده و به آن دسترسی داشته باشد.
وقتی کوکیهای شخص ثالث مجاز هستند، سایت B میتواند کوکی بدون پارتیشن را نیز تنظیم کرده و به آن دسترسی داشته باشد.
پیش نیازها
- Chrome 118 یا بالاتر.
- از
chrome://flags/#test-third-party-cookie-phaseout
دیدن کنید و این تنظیم را فعال کنید
از DevTools برای بررسی کوکی های پارتیشن بندی شده استفاده کنید
- از https://chips-site-a.glitch.me دیدن کنید.
- برای باز کردن DevTools
Control+Shift+J
(یاCommand+Option+J
در مک) را فشار دهید. - روی تب Application کلیک کنید.
- به Application > Storage > Cookies بروید.
- روی
https://chips-site-b.glitch.me
کلیک کنید.
DevTools تمام کوکی ها را از مبدا انتخاب شده نمایش می دهد.
سایت B فقط می تواند کوکی پارتیشن بندی شده را در زمینه بین سایتی تنظیم کند، کوکی پارتیشن بندی نشده مسدود می شود:
- باید
__Host-partitioned-cookie
با کلید پارتیشن سایت سطح بالاhttps://chips-site-a.glitch.me
ببینید.
- برو به سایت B کلیک کنید.
- در DevTools، به Application > Storage > Cookies بروید.
- روی
https://chips-site-b.glitch.me
کلیک کنید.
در این سناریو، چون در سایت B در زمینه سطح بالا هستید، میتواند هر دو کوکی را تنظیم کرده و به آن دسترسی داشته باشد:
-
unpartitioned-cookie
یک کلید پارتیشن خالی دارد. - __کوکی
__Host-partitioned-cookie
دارای کلید پارتیشنhttps://chips-site-b.glitch.me
است.
اگر به سایت A برگردید، unpartitioned-cookie
اکنون در مرورگر ذخیره می شود، اما از سایت A قابل دسترسی نخواهد بود.
- برو به سایت A کلیک کنید.
- روی تب Network کلیک کنید.
- روی
https://chips-site-b.glitch.me
کلیک کنید. - روی تب Cookies کلیک کنید.
هنگامی که در سایت A هستید، باید __Host-partitioned-cookie
با کلید پارتیشن سایت سطح بالا https://chips-site-a.glitch.me
ببینید.
اگر نمایش درخواستهای کوکیهای فیلتر شده را علامت بزنید، DevTools نشان میدهد که کوکی پارتیشنبندی نشده مسدود شده است، که با یک راهنمای ابزار با رنگ زرد مشخص شده است: "این کوکی به دلیل تنظیمات برگزیده کاربر مسدود شد" .
در Application > Storage > Cookies با کلیک بر روی https://chips-site-b.glitch.me
نشان داده می شود:
-
unpartitioned-cookie
با کلید پارتیشن خالی. -
__Host-partitioned-cookie
با کلید پارتیشنhttps://chips-site-a.glitch.me
.
پاک کردن کوکی ها
برای بازنشانی نسخه آزمایشی، تمام کوکیهای سایت را پاک کنید:
- برای باز کردن DevTools
Control+Shift+J
(یاCommand+Option+J
در مک) را فشار دهید. - روی تب Application کلیک کنید.
- به Application > Storage > Cookies بروید.
- روی
https://chips-site-b.glitch.me
کلیک راست کنید. - روی Clear کلیک کنید.
منابع
- GitHub : توضیح دهنده را بخوانید، سوالاتی را مطرح کنید و بحث را دنبال کنید .
- پشتیبانی برنامهنویس : سؤال بپرسید و به بحثهای مربوط به مخزن پشتیبانی توسعهدهنده Privacy Sandbox بپیوندید.
به توسعهدهندگان اجازه دهید تا یک کوکی را در فضای ذخیرهسازی «پارتیشنبندیشده» انتخاب کنند، با یک ظرف کوکی جداگانه در هر سایت سطح بالا.
وضعیت پیاده سازی
- به طور پیش فرض در Chrome 114 و بالاتر پشتیبانی می شود.
- نسخه آزمایشی اصلی، که اکنون کامل شده است، از Chrome 100 تا 116 در دسترس بود.
- Intent to Experiment و Intent to Ship را بخوانید.
چیپس چیست؟
کوکیهای دارای حالت پارتیشنبندی شده مستقل (CHIPS) به توسعهدهندگان اجازه میدهد تا یک کوکی را در فضای ذخیرهسازی پارتیشنبندی شده، با شیشههای کوکی مجزا در هر سایت سطح بالا انتخاب کنند، که حریم خصوصی و امنیت کاربر را بهبود میبخشد.
بدون پارتیشن بندی، کوکی های شخص ثالث می توانند سرویس ها را برای ردیابی کاربران و پیوستن اطلاعات آنها از بسیاری از سایت های سطح بالای نامرتبط فعال کنند. این به عنوان ردیابی متقابل سایت شناخته می شود.
CHIPS، Storage Access API و مجموعههای وبسایت مرتبط تنها راه خواندن و نوشتن کوکیها از زمینههای بین سایتی، مانند iframes، زمانی که کوکیهای شخص ثالث مسدود هستند، هستند.
CHIPS یک ویژگی کوکی جدید Partitioned
را برای پشتیبانی از کوکیهای بین سایتی که بر اساس بافت سطح بالا تقسیم میشوند، معرفی میکند.
هدر Set-Cookie:
Set-Cookie: __Host-name=value; Secure; Path=/; SameSite=None; Partitioned;
جاوا اسکریپت:
document.cookie="__Host-name=value; Secure; Path=/; SameSite=None; Partitioned;"
یک کوکی شخص ثالث پارتیشن بندی شده به سایت سطح بالایی که در ابتدا تنظیم شده است گره خورده است و از جای دیگری قابل دسترسی نیست. به این ترتیب کوکی های تنظیم شده توسط یک سرویس شخص ثالث را فقط می توان در همان زمینه جاسازی شده سایت سطح بالا که در ابتدا تنظیم شده بود، خواند.
با کوکی های پارتیشن بندی شده، وقتی کاربر از سایت A بازدید می کند و محتوای جاسازی شده از سایت C یک کوکی با ویژگی پارتیشن بندی شده تنظیم می کند، کوکی در یک شیشه پارتیشن بندی شده ذخیره می شود که فقط برای کوکی هایی که سایت C هنگام جاسازی در سایت A تنظیم می کند، ذخیره می شود. تنها زمانی آن کوکی را ارسال می کند که سایت سطح بالا A باشد.
هنگامی که کاربر از یک سایت جدید بازدید می کند، به عنوان مثال سایت B، یک فریم جاسازی شده C کوکی را که در زمان جاسازی C در سایت A تنظیم شده بود، دریافت نمی کند.
اگر کاربر از سایت C به عنوان یک وب سایت سطح بالا بازدید کند، کوکی پارتیشن بندی شده ای که C در زمان جاسازی آن در A تنظیم کرده است نیز در آن درخواست ارسال نمی شود.
موارد استفاده کنید
به عنوان مثال، سایت retail.example
ممکن است بخواهد با یک سرویس شخص ثالث support.chat.example
کار کند تا جعبه گفتگوی پشتیبانی را در سایت خود جاسازی کند. امروزه بسیاری از سرویسهای چت قابل جاسازی برای ذخیره وضعیت به کوکیها متکی هستند.
بدون توانایی تنظیم یک کوکی بین سایتی، support.chat.example
باید روشهای جایگزین، اغلب پیچیدهتر، را برای ذخیره وضعیت پیدا کند. از طرف دیگر، باید در صفحه سطح بالایی که خطرات را معرفی میکند جاسازی شود، زیرا به اسکریپت support.chat.example
اجازه میدهد تا امتیازات بالایی در retail.example داشته باشد، مانند امکان دسترسی به کوکیهای احراز هویت.
CHIPS گزینه سادهتری برای ادامه استفاده از کوکیهای بین سایتی بدون خطرات مرتبط با کوکیهای پارتیشن نشده فراهم میکند.
نمونههایی از موارد استفاده برای تراشهها شامل هر سناریوهایی است که در آن منابع فرعی بین سایتی نیاز به مفهومی از جلسه یا حالت پایدار دارند که به فعالیت کاربر در یک سایت سطح بالا اختصاص دارد، مانند:
- جاسازی های چت شخص ثالث
- نقشه های شخص ثالث جاسازی می شود
- تعبیههای پرداخت شخص ثالث
- تعادل بار CDN منبع فرعی
- ارائه دهندگان CMS بدون سر
- دامنههای جعبه ایمنی برای ارائه محتوای غیرقابل اعتماد کاربر (مانند googleusercontent.com و githubusercontent.com)
- CDN های شخص ثالث که از کوکی ها برای ارائه محتوایی استفاده می کنند که توسط وضعیت احراز هویت در سایت شخص اول کنترل می شود (به عنوان مثال، تصاویر نمایه در سایت های رسانه های اجتماعی میزبانی شده در CDN های شخص ثالث)
- فریمورکهای فرانتاند که به APIهای راه دور با استفاده از کوکیها در درخواستهایشان متکی هستند
- تبلیغات جاسازی شده که نیاز به محدوده وضعیت به ازای هر ناشر دارند (به عنوان مثال، گرفتن تنظیمات برگزیده تبلیغات کاربران برای آن وب سایت)
چرا CHIPS از یک مدل پارتیشن بندی انتخابی استفاده می کند؟
در جایی که دسترسی به کوکی های شخص ثالث پارتیشن بندی نشده مسدود شده است، چند روش دیگر برای پارتیشن بندی انجام شده است.
فایرفاکس اعلام کرد که تمام کوکیهای شخص ثالث را بهطور پیشفرض در حالت ETP Strict و حالت مرور خصوصی خود پارتیشن بندی میکنند، بنابراین همه کوکیهای بین سایتی توسط سایت سطح بالا پارتیشن بندی میشوند. با این حال، پارتیشن بندی کوکی ها بدون انتخاب شخص ثالث می تواند منجر به اشکالات غیرمنتظره شود، زیرا برخی از سرویس های شخص ثالث سرورهایی ساخته اند که انتظار یک کوکی شخص ثالث پارتیشن نشده را دارند.
Safari قبلاً کوکیها را بر اساس اکتشافی پارتیشن بندی کرده بود ، اما در نهایت تصمیم گرفت آنها را به طور کامل مسدود کند و سردرگمی توسعه دهندگان را یکی از دلایل ذکر کرد. اخیراً، سافاری به یک مدل مبتنی بر انتخاب نشان داده است .
چیزی که CHIPS را از پیاده سازی های موجود کوکی های پارتیشن بندی شده متمایز می کند، انتخاب شخص ثالث است. کوکیها باید با یک ویژگی جدید تنظیم شوند تا پس از منسوخ شدن کوکیهای شخص ثالث (غیرپارتیشننشده) در درخواستهای بین شخص ارسال شوند.
در حالی که کوکیهای شخص ثالث هنوز وجود دارند، ویژگی Partitioned
یک نوع رفتار محدودتر و ایمنتر از کوکیها را انتخاب میکند. CHIPS گام مهمی برای کمک به سرویسها برای انتقال آرام به آینده بدون کوکیهای شخص ثالث است.
طراحی فنی پارتیشن بندی کوکی
امروزه، کوکیها روی نام میزبان یا دامنه سایتی که آنها را تنظیم میکند، کلید میشوند، یعنی کلید میزبان آنها.
برای مثال، برای کوکیهای https://support.chat.example
، کلید میزبان ("support.chat.example")
است.
تحت CHIPS، کوکیهایی که پارتیشنبندی را انتخاب میکنند، روی کلید میزبان و کلید پارتیشن دو کلید میشوند.
کلید پارتیشن یک کوکی ، سایت ( طرح و دامنه قابل ثبت ) URL سطح بالایی است که مرورگر در ابتدای درخواست به نقطه پایانی که کوکی را تنظیم می کند، از آن بازدید می کرد.
در مثال قبلی، جایی که https://support.chat.example
در https://retail.example
تعبیه شده است، URL سطح بالا https://retail.example
است.
کلید پارتیشن در این مورد ("https", "retail.example")
است.
به همین ترتیب، کلید پارتیشن درخواست ، سایت URL سطح بالایی است که مرورگر در ابتدای درخواست از آن بازدید می کند. مرورگرها فقط باید یک کوکی با ویژگی Partitioned
در درخواست هایی با همان کلید پارتیشن آن کوکی ارسال کنند.
در اینجا کلید کوکی در مثال قبلی قبل و بعد از CHIPS به نظر می رسد.
قبل از چیپس
key=("support.chat.example")
بعد از چیپس
key={("support.chat.example"),("https", "retail.example")}
طراحی امنیتی
برای تشویق اقدامات امنیتی خوب، با CHIPS، کوکیها فقط توسط پروتکلهای ایمن تنظیم و ارسال میشوند.
- کوکی های پارتیشن بندی شده باید با
Secure
تنظیم شوند. - توصیه می شود هنگام تنظیم کوکی های پارتیشن بندی شده از پیشوند
__Host-
استفاده کنید تا آنها را به نام میزبان (و نه دامنه قابل ثبت) متصل کنید.
مثال:
Set-Cookie: __Host-example=34d8g; SameSite=None; Secure; Path=/; Partitioned;
جایگزین های چیپس
Storage Access API و مجموعههای وبسایت مرتبط (RWS) مکانیزمهای پلتفرم وب هستند که دسترسی محدود به کوکی بینسایتی را برای مقاصد خاص و با کاربر امکانپذیر میکنند.
اینها جایگزین هایی برای پارتیشن بندی CHIPS هستند که در آن دسترسی به آشپزهای بین سایتی و بدون پارتیشن مورد نیاز است.
API دسترسی به فضای ذخیرهسازی و مجموعههای وبسایت مرتبط را در شرایطی در نظر بگیرید که به همان کوکی نیاز دارید تا در سرویسی که در چندین سایت مرتبط تعبیه شده است در دسترس باشد.
CHIPS این قابلیت را فراهم می کند که یک سرویس به عنوان یک مؤلفه ایزوله در چندین سایت عمل کند، جایی که نیازی نیست یک کوکی مشابه در چندین سایت در دسترس باشد. اگر سرویس یک کوکی پارتیشن بندی شده تنظیم کند، کلید پارتیشن آن سایت سطح بالا خواهد بود و آن کوکی برای سایت های دیگری که از این سرویس نیز استفاده می کنند در دسترس نخواهد بود.
طراحی Related Website Sets متکی بر Storage Access API است و با پارتیشن بندی CHIPS ادغام نمی شود. اگر یک مورد استفاده دارید که متکی به یک پارتیشن کوکی مشترک در بین سایتها در RWS است، میتوانید مثالها و بازخوردهایی در مورد مشکل GitHub ارائه دهید .
نسخه ی نمایشی
این نسخه نمایشی نحوه عملکرد کوکی های پارتیشن بندی شده و نحوه بازرسی آنها را در DevTools به شما آموزش می دهد.
سایت A یک iframe از سایت B تعبیه می کند که از جاوا اسکریپت برای تنظیم دو کوکی استفاده می کند: یک کوکی پارتیشن بندی شده و پارتیشن بندی نشده. سایت B تمام کوکی های قابل دسترسی از آن مکان را با استفاده از document.cookie
نمایش می دهد.
وقتی کوکیهای شخص ثالث مسدود میشوند، سایت B فقط میتواند کوکی را با ویژگی Partitioned
در زمینه بینسایتی تنظیم کرده و به آن دسترسی داشته باشد.
وقتی کوکیهای شخص ثالث مجاز هستند، سایت B میتواند کوکی بدون پارتیشن را نیز تنظیم کرده و به آن دسترسی داشته باشد.
پیش نیازها
- Chrome 118 یا بالاتر.
- از
chrome://flags/#test-third-party-cookie-phaseout
دیدن کنید و این تنظیم را فعال کنید
از DevTools برای بررسی کوکی های پارتیشن بندی شده استفاده کنید
- از https://chips-site-a.glitch.me دیدن کنید.
- برای باز کردن DevTools
Control+Shift+J
(یاCommand+Option+J
در مک) را فشار دهید. - روی تب Application کلیک کنید.
- به Application > Storage > Cookies بروید.
- روی
https://chips-site-b.glitch.me
کلیک کنید.
DevTools تمام کوکی ها را از مبدا انتخاب شده نمایش می دهد.
سایت B فقط می تواند کوکی پارتیشن بندی شده را در زمینه بین سایتی تنظیم کند، کوکی پارتیشن بندی نشده مسدود می شود:
- باید
__Host-partitioned-cookie
با کلید پارتیشن سایت سطح بالاhttps://chips-site-a.glitch.me
ببینید.
- برو به سایت B کلیک کنید.
- در DevTools، به Application > Storage > Cookies بروید.
- روی
https://chips-site-b.glitch.me
کلیک کنید.
در این سناریو، چون در سایت B در زمینه سطح بالا هستید، میتواند هر دو کوکی را تنظیم کرده و به آن دسترسی داشته باشد:
-
unpartitioned-cookie
یک کلید پارتیشن خالی دارد. - __کوکی
__Host-partitioned-cookie
دارای کلید پارتیشنhttps://chips-site-b.glitch.me
است.
اگر به سایت A برگردید، unpartitioned-cookie
اکنون در مرورگر ذخیره می شود، اما از سایت A قابل دسترسی نخواهد بود.
- برو به سایت A کلیک کنید.
- روی تب Network کلیک کنید.
- روی
https://chips-site-b.glitch.me
کلیک کنید. - روی تب Cookies کلیک کنید.
هنگامی که در سایت A هستید، باید __Host-partitioned-cookie
با کلید پارتیشن سایت سطح بالا https://chips-site-a.glitch.me
ببینید.
اگر نمایش درخواستهای کوکیهای فیلتر شده را علامت بزنید، DevTools نشان میدهد که کوکی پارتیشنبندی نشده مسدود شده است، که با یک راهنمای ابزار با رنگ زرد مشخص شده است: "این کوکی به دلیل تنظیمات برگزیده کاربر مسدود شد" .
در Application > Storage > Cookies با کلیک بر روی https://chips-site-b.glitch.me
نشان داده می شود:
-
unpartitioned-cookie
با کلید پارتیشن خالی. -
__Host-partitioned-cookie
با کلید پارتیشنhttps://chips-site-a.glitch.me
.
پاک کردن کوکی ها
برای بازنشانی نسخه آزمایشی، تمام کوکیهای سایت را پاک کنید:
- برای باز کردن DevTools
Control+Shift+J
(یاCommand+Option+J
در مک) را فشار دهید. - روی تب Application کلیک کنید.
- به Application > Storage > Cookies بروید.
- روی
https://chips-site-b.glitch.me
کلیک راست کنید. - روی Clear کلیک کنید.
منابع
- GitHub : توضیح دهنده را بخوانید، سوالاتی را مطرح کنید و بحث را دنبال کنید .
- پشتیبانی برنامهنویس : سؤال بپرسید و به بحثهای مربوط به مخزن پشتیبانی توسعهدهنده Privacy Sandbox بپیوندید.
به توسعهدهندگان اجازه دهید تا یک کوکی را در فضای ذخیرهسازی «پارتیشنبندیشده» انتخاب کنند، با یک ظرف کوکی جداگانه در هر سایت سطح بالا.
وضعیت پیاده سازی
- به طور پیش فرض در Chrome 114 و بالاتر پشتیبانی می شود.
- نسخه آزمایشی اصلی، که اکنون کامل شده است، از Chrome 100 تا 116 در دسترس بود.
- Intent to Experiment و Intent to Ship را بخوانید.
چیپس چیست؟
کوکیهای دارای حالت پارتیشنبندی شده مستقل (CHIPS) به توسعهدهندگان اجازه میدهد تا یک کوکی را در فضای ذخیرهسازی پارتیشنبندی شده، با شیشههای کوکی مجزا در هر سایت سطح بالا انتخاب کنند، که حریم خصوصی و امنیت کاربر را بهبود میبخشد.
بدون پارتیشن بندی، کوکی های شخص ثالث می توانند سرویس ها را برای ردیابی کاربران و پیوستن اطلاعات آنها از بسیاری از سایت های سطح بالای نامرتبط فعال کنند. این به عنوان ردیابی متقابل سایت شناخته می شود.
CHIPS، Storage Access API و مجموعههای وبسایت مرتبط تنها راه خواندن و نوشتن کوکیها از زمینههای بین سایتی، مانند iframes، زمانی که کوکیهای شخص ثالث مسدود هستند، هستند.
CHIPS یک ویژگی کوکی جدید Partitioned
را برای پشتیبانی از کوکیهای بین سایتی که بر اساس بافت سطح بالا تقسیم میشوند، معرفی میکند.
هدر Set-Cookie:
Set-Cookie: __Host-name=value; Secure; Path=/; SameSite=None; Partitioned;
جاوا اسکریپت:
document.cookie="__Host-name=value; Secure; Path=/; SameSite=None; Partitioned;"
یک کوکی شخص ثالث پارتیشن بندی شده به سایت سطح بالایی که در ابتدا تنظیم شده است گره خورده است و از جای دیگری قابل دسترسی نیست. به این ترتیب کوکی های تنظیم شده توسط یک سرویس شخص ثالث را فقط می توان در همان زمینه جاسازی شده سایت سطح بالا که در ابتدا تنظیم شده بود، خواند.
با کوکی های پارتیشن بندی شده، وقتی کاربر از سایت A بازدید می کند و محتوای جاسازی شده از سایت C یک کوکی با ویژگی پارتیشن بندی شده تنظیم می کند، کوکی در یک شیشه پارتیشن بندی شده ذخیره می شود که فقط برای کوکی هایی که سایت C هنگام جاسازی در سایت A تنظیم می کند، ذخیره می شود. تنها زمانی آن کوکی را ارسال می کند که سایت سطح بالا A باشد.
هنگامی که کاربر از یک سایت جدید بازدید می کند، به عنوان مثال سایت B، یک فریم جاسازی شده C کوکی را که در زمان جاسازی C در سایت A تنظیم شده بود، دریافت نمی کند.
اگر کاربر از سایت C به عنوان یک وب سایت سطح بالا بازدید کند، کوکی پارتیشن بندی شده ای که C در زمان جاسازی آن در A تنظیم کرده است نیز در آن درخواست ارسال نمی شود.
موارد استفاده کنید
به عنوان مثال، سایت retail.example
ممکن است بخواهد با یک سرویس شخص ثالث support.chat.example
کار کند تا جعبه گفتگوی پشتیبانی را در سایت خود جاسازی کند. امروزه بسیاری از سرویسهای چت قابل جاسازی برای ذخیره وضعیت به کوکیها متکی هستند.
بدون توانایی تنظیم یک کوکی بین سایتی، support.chat.example
باید روشهای جایگزین، اغلب پیچیدهتر، را برای ذخیره وضعیت پیدا کند. از طرف دیگر، باید در صفحه سطح بالایی که خطرات را معرفی میکند جاسازی شود، زیرا به اسکریپت support.chat.example
اجازه میدهد تا امتیازات بالایی در retail.example داشته باشد، مانند امکان دسترسی به کوکیهای احراز هویت.
CHIPS گزینه سادهتری برای ادامه استفاده از کوکیهای بین سایتی بدون خطرات مرتبط با کوکیهای پارتیشن نشده فراهم میکند.
نمونههایی از موارد استفاده برای تراشهها شامل هر سناریوهایی است که در آن منابع فرعی بین سایتی نیاز به مفهومی از جلسه یا حالت پایدار دارند که به فعالیت کاربر در یک سایت سطح بالا اختصاص دارد، مانند:
- جاسازی های چت شخص ثالث
- نقشه های شخص ثالث جاسازی می شود
- تعبیههای پرداخت شخص ثالث
- تعادل بار CDN منبع فرعی
- ارائه دهندگان CMS بدون سر
- دامنههای جعبه ایمنی برای ارائه محتوای غیرقابل اعتماد کاربر (مانند googleusercontent.com و githubusercontent.com)
- CDN های شخص ثالث که از کوکی ها برای ارائه محتوایی استفاده می کنند که توسط وضعیت احراز هویت در سایت شخص اول کنترل می شود (به عنوان مثال، تصاویر نمایه در سایت های رسانه های اجتماعی میزبانی شده در CDN های شخص ثالث)
- فریمورکهای فرانتاند که به APIهای راه دور با استفاده از کوکیها در درخواستهایشان متکی هستند
- تبلیغات جاسازی شده که نیاز به محدوده وضعیت به ازای هر ناشر دارند (به عنوان مثال، گرفتن تنظیمات برگزیده تبلیغات کاربران برای آن وب سایت)
چرا CHIPS از یک مدل پارتیشن بندی انتخابی استفاده می کند؟
در جایی که دسترسی به کوکی های شخص ثالث پارتیشن بندی نشده مسدود شده است، چند روش دیگر برای پارتیشن بندی انجام شده است.
فایرفاکس اعلام کرد که تمام کوکیهای شخص ثالث را بهطور پیشفرض در حالت ETP Strict و حالت مرور خصوصی خود پارتیشن بندی میکنند، بنابراین همه کوکیهای بین سایتی توسط سایت سطح بالا پارتیشن بندی میشوند. با این حال، پارتیشن بندی کوکی ها بدون انتخاب شخص ثالث می تواند منجر به اشکالات غیرمنتظره شود، زیرا برخی از سرویس های شخص ثالث سرورهایی ساخته اند که انتظار یک کوکی شخص ثالث پارتیشن نشده را دارند.
Safari قبلاً کوکیها را بر اساس اکتشافی پارتیشن بندی کرده بود ، اما در نهایت تصمیم گرفت آنها را به طور کامل مسدود کند و سردرگمی توسعه دهندگان را یکی از دلایل ذکر کرد. اخیراً، سافاری به یک مدل مبتنی بر انتخاب نشان داده است .
چیزی که CHIPS را از پیاده سازی های موجود کوکی های پارتیشن بندی شده متمایز می کند، انتخاب شخص ثالث است. کوکیها باید با یک ویژگی جدید تنظیم شوند تا پس از منسوخ شدن کوکیهای شخص ثالث (غیرپارتیشننشده) در درخواستهای بین شخص ارسال شوند.
در حالی که کوکیهای شخص ثالث هنوز وجود دارند، ویژگی Partitioned
یک نوع رفتار محدودتر و ایمنتر از کوکیها را انتخاب میکند. تراشه ها یک گام مهم برای کمک به خدمات است که بدون کوکی های شخص ثالث به آینده انتقال می یابد.
طراحی فنی پارتیشن بندی کوکی
امروز ، کوکی ها روی نام میزبان یا دامنه سایتی که آنها را تنظیم کرده اند ، یعنی کلید میزبان آنها.
به عنوان مثال ، برای کوکی های https://support.chat.example
، کلید میزبان ("support.chat.example")
است.
در زیر چیپس ، کوکی هایی که به پارتیشن بندی می پردازند ، روی کلید میزبان و کلید پارتیشن خود به صورت مضاعف استفاده می شوند.
کلید پارتیشن کوکی سایت ( طرح و دامنه قابل ثبت ) از URL سطح بالایی است که مرورگر در ابتدای درخواست به نقطه پایانی که کوکی را تنظیم کرده بود ، بازدید می کرد.
در مثال قبلی ، جایی که https://support.chat.example
در https://retail.example
تعبیه شده است ، URL سطح بالا https://retail.example
است.
کلید پارتیشن در آن مورد ("https", "retail.example")
است.
به همین ترتیب ، کلید پارتیشن درخواست ، سایت URL سطح بالایی است که مرورگر در ابتدای درخواست از آن بازدید می کند. مرورگرها فقط باید یک کوکی را با ویژگی Partitioned
در درخواست هایی با همان کلید پارتیشن مانند آن کوکی ارسال کنند.
این همان چیزی است که کلید کوکی در مثال قبل و بعد از تراشه ها به نظر می رسد.
قبل از چیپس
key=("support.chat.example")
بعد از چیپس
key={("support.chat.example"),("https", "retail.example")}
طراحی امنیتی
برای تشویق شیوه های امنیتی خوب ، با تراشه ها ، کوکی ها فقط توسط پروتکل های ایمن تنظیم شده و ارسال می شوند.
- کوکی های پارتیشن باید با
Secure
تنظیم شوند. - توصیه می شود هنگام تنظیم کوکی های تقسیم شده از پیشوند
__Host-
استفاده کنید تا آنها را به نام میزبان (و نه دامنه قابل ثبت) محدود کنید.
مثال:
Set-Cookie: __Host-example=34d8g; SameSite=None; Secure; Path=/; Partitioned;
گزینه های دیگر برای تراشه ها
API دسترسی به ذخیره سازی و مجموعه های وب سایت مرتبط با آن (RWS) مکانیسم های پلتفرم وب برای فعال کردن دسترسی به کوکی های متقابل محدود برای اهداف خاص و کاربر هستند.
اینها گزینه های دیگری برای تقسیم بندی تراشه ها است که در آن دسترسی به کوک های متقاطع ، بدون تقسیم مورد نیاز است.
API دسترسی به ذخیره سازی و مجموعه های وب سایت مرتبط را در شرایطی در نظر بگیرید که در آن به همان کوکی نیاز دارید تا در سرویس هایی که در چندین سایت مرتبط تعبیه شده است در دسترس باشد.
تراشه ها توانایی عمل یک سرویس را به عنوان یک مؤلفه جدا شده در چندین سایت فراهم می کند ، جایی که لازم نیست همان کوکی در چندین سایت در دسترس باشد. اگر این سرویس یک کوکی تقسیم شده را تنظیم کند ، کلید پارتیشن آن سایت سطح بالا خواهد بود و این کوکی با استفاده از سرویس در دسترس سایر سایت ها نیز نخواهد بود.
طراحی وب سایت مرتبط طراحی به API دسترسی به ذخیره سازی متکی است و با پارتیشن بندی تراشه ها ادغام نمی شود. اگر یک مورد استفاده دارید که به یک پارتیشن مشترک کوکی در سایت ها در یک RWS متکی است ، می توانید نمونه ها و بازخوردهای مربوط به مسئله GitHub را ارائه دهید .
نسخه ی نمایشی
این نسخه ی نمایشی شما را از طریق نحوه کار کوکی های پارتیشن و چگونگی بازرسی آنها در Devtools طی می کند.
سایت A یک IFRAME را از سایت B تعبیه می کند که از JavaScript برای تنظیم دو کوکی استفاده می کند: یک کوکی پارتیشن و بدون تقسیم. سایت B تمام کوکی های قابل دسترسی از آن مکان را با استفاده از document.cookie
نشان می دهد.
هنگامی که کوکی های شخص ثالث مسدود می شوند ، سایت B فقط قادر به تنظیم و دسترسی به کوکی با ویژگی Partitioned
در متن متقابل است.
هنگامی که کوکی های شخص ثالث مجاز هستند ، سایت B قادر به تنظیم و دسترسی به کوکی های غیرقانونی است.
پیش نیازها
- Chrome 118 یا بالاتر.
- به
chrome://flags/#test-third-party-cookie-phaseout
مراجعه کرده و این تنظیم را فعال کنید
برای بازرسی از کوکی های پارتیشن از DevTools استفاده کنید
- به https://chips-site-a.glitch.me مراجعه کنید.
-
Control+Shift+J
(یاCommand+Option+J
در Mac) فشار دهید تا DevTools باز شود. - روی تب Application کلیک کنید.
- به برنامه> ذخیره سازی> کوکی ها بروید.
- روی
https://chips-site-b.glitch.me
کلیک کنید.
DevTools تمام کوکی ها را از منشأ انتخاب شده نمایش می دهد.
سایت B فقط می تواند کوکی تقسیم شده را در متن متقاطع تنظیم کند ، کوکی بدون تقسیم مسدود خواهد شد:
- شما باید
__Host-partitioned-cookie
با کلید پارتیشن سایت سطح بالاhttps://chips-site-a.glitch.me
مشاهده کنید.
- روی رفتن به سایت b کلیک کنید.
- در DevTools ، به برنامه> ذخیره سازی> کوکی ها بروید.
- روی
https://chips-site-b.glitch.me
کلیک کنید.
در این سناریو ، به دلیل اینکه در متن سطح بالا در سایت B هستید ، می تواند به هر دو کوکی تنظیم و دسترسی داشته باشد:
-
unpartitioned-cookie
یک کلید پارتیشن خالی دارد. -
__Host-partitioned-cookie
کوکی دارای کلید پارتیشنhttps://chips-site-b.glitch.me
است.
اگر به سایت A برگردید ، اکنون در مرورگر در مرورگر ذخیره می شود ، اما از سایت A قابل دسترسی نخواهد بود unpartitioned-cookie
- روی رفتن به سایت a کلیک کنید.
- روی تب Network کلیک کنید.
- روی
https://chips-site-b.glitch.me
کلیک کنید. - روی تب Cookies کلیک کنید.
در حالی که در سایت A هستید ، باید __Host-partitioned-cookie
با کلید پارتیشن سایت سطح بالا https://chips-site-a.glitch.me
مشاهده کنید.
اگر نمایش داده های کوکی های فیلتر شده را بررسی کنید .
در برنامه> ذخیره سازی> کوکی ها با کلیک بر روی https://chips-site-b.glitch.me
نشان می دهد:
-
unpartitioned-cookie
با کلید پارتیشن خالی. -
__Host-partitioned-cookie
با کلید پارتیشنhttps://chips-site-a.glitch.me
.
پاک کردن کوکی ها
برای تنظیم مجدد نسخه ی نمایشی ، تمام کوکی ها را برای سایت پاک کنید:
-
Control+Shift+J
(یاCommand+Option+J
در Mac) فشار دهید تا DevTools باز شود. - روی تب Application کلیک کنید.
- به برنامه> ذخیره سازی> کوکی ها بروید.
- کلیک راست در
https://chips-site-b.glitch.me
. - روی Clear کلیک کنید.
منابع
- GitHub : توضیح دهنده را بخوانید ، سؤالات را مطرح کنید و بحث را دنبال کنید .
- پشتیبانی توسعه دهنده : سؤال بپرسید و به بحث و گفتگو در مورد Repo پشتیبانی پشتیبانی توسعه دهنده Sandbox بپیوندید.