به توسعهدهندگان اجازه دهید تا یک کوکی را در فضای ذخیرهسازی «پارتیشنبندیشده» انتخاب کنند، با یک ظرف کوکی جداگانه در هر سایت سطح بالا.
وضعیت پیاده سازی
- به طور پیش فرض در Chrome 114 و بالاتر پشتیبانی می شود.
- نسخه آزمایشی اصلی، که اکنون کامل شده است، از Chrome 100 تا 116 در دسترس بود.
- Intent to Experiment و Intent to Ship را بخوانید.
چیپس چیست؟
کوکیهای دارای حالت پارتیشنبندی شده مستقل (CHIPS) به توسعهدهندگان اجازه میدهد تا یک کوکی را در فضای ذخیرهسازی پارتیشنبندی شده، با شیشههای کوکی مجزا در هر سایت سطح بالا انتخاب کنند، که حریم خصوصی و امنیت کاربر را بهبود میبخشد.
بدون پارتیشن بندی، کوکی های شخص ثالث می توانند سرویس ها را برای ردیابی کاربران و پیوستن اطلاعات آنها از بسیاری از سایت های سطح بالای نامرتبط فعال کنند. این به عنوان ردیابی متقابل سایت شناخته می شود.
مرورگرها در حال حذف تدریجی کوکیهای شخص ثالث پارتیشن نشده هستند، بنابراین CHIPS، 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، 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، 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 قبلاً کوکیها را بر اساس اکتشافی پارتیشن بندی کرده بود ، اما در نهایت تصمیم گرفت آنها را به طور کامل مسدود کند و سردرگمی توسعه دهندگان را یکی از دلایل ذکر کرد. اخیراً، سافاری به یک مدل مبتنی بر انتخاب نشان داده است .
آنچه تراشه ها را از پیاده سازی های موجود کوکی های تقسیم شده جدا می کند ، انتخاب شخص ثالث است. کوکی ها باید با یک ویژگی جدید تنظیم شوند تا در درخواست های متقابل یک بار (نامشخص) کوکی های شخص ثالث در منسوخ باشند.
در حالی که کوکی های شخص ثالث هنوز هم وجود دارند ، ویژگی 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 باز شود. - روی برگه برنامه کلیک کنید.
- به برنامه> ذخیره سازی> کوکی ها بروید.
- روی
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 باز شود. - روی برگه برنامه کلیک کنید.
- به برنامه> ذخیره سازی> کوکی ها بروید.
- کلیک راست در
https://chips-site-b.glitch.me
. - روی Clear کلیک کنید.
منابع
- GitHub : توضیح دهنده را بخوانید ، سؤالات را مطرح کنید و بحث را دنبال کنید .
- پشتیبانی توسعه دهنده : سؤال بپرسید و به بحث و گفتگو در مورد Repo پشتیبانی پشتیبانی توسعه دهنده Sandbox بپیوندید.
به توسعه دهندگان اجازه دهید تا یک کوکی را به ذخیره سازی "پارتیشن" ، با یک شیشه کوکی جداگانه در هر سایت سطح بالا انتخاب کنند.
وضعیت اجرا
- به طور پیش فرض در Chrome 114 و بالاتر پشتیبانی می شود.
- نسخه آزمایشی اصلی، که اکنون کامل شده است، از Chrome 100 تا 116 در دسترس بود.
- Intent to Experiment و Intent to Ship را بخوانید.
چیپس چیست؟
کوکی هایی که دارای حالت پارتیشن مستقل (Chips) هستند به توسعه دهندگان این امکان را می دهد تا کوکی را به ذخیره سازی پارتیشن ، با کوزه های کوکی جداگانه در هر سایت سطح بالا انتخاب کنند و باعث بهبود حریم خصوصی و امنیت کاربر شوند.
بدون تقسیم بندی ، کوکی های شخص ثالث می توانند خدمات را برای ردیابی کاربران و پیوستن به اطلاعات خود از بسیاری از سایت های سطح بالا غیر مرتبط فراهم کنند. این به عنوان ردیابی متقابل سایت شناخته می شود.
مرورگرها به خوبی در حال انجام کوکی های شخص ثالث بدون تقسیم هستند ، بنابراین تراشه ها ، API دسترسی به ذخیره سازی و مجموعه های وب سایت مرتبط تنها راه خواندن و نوشتن کوکی ها از متن های متقابل مانند IFRAMES هنگام شخص ثالث خواهد بود. کوکی ها مسدود شده اند.
تراشه ها یک ویژگی کوکی جدید ، Partitioned
برای پشتیبانی از کوکی های متقاطع که توسط متن سطح بالا تقسیم می شوند ، معرفی می کند.
هدر تنظیم کنسرو:
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 تنظیم شده است ، در این درخواست نیز ارسال نمی شود.
موارد استفاده کنید
به عنوان مثال ، Site retail.example
ممکن است بخواهد با یک سرویس شخص ثالث support.chat.example
. Chat.example برای جاسازی یک جعبه چت پشتیبانی در سایت خود. بسیاری از خدمات چت قابل تعبیه امروز برای نجات دولت به کوکی ها متکی هستند.
بدون امکان تنظیم یک کوکی متقاطع ، support.chat.example
نیاز به یافتن روشهای جایگزین ، اغلب پیچیده تر برای ذخیره حالت دارد. از طرف دیگر ، لازم است در صفحه سطح بالا تعبیه شود که خطرات را به وجود می آورد زیرا به support.chat.example
پشتیبانی می کند.
Chips گزینه ای آسان تر برای ادامه استفاده از کوکی های متقاطع ، بدون خطرات مرتبط با کوکی های غیرقانونی فراهم می کند.
به عنوان مثال موارد استفاده برای تراشه ها شامل هر سناریویی است که در آن منابع زیر مجموعه ای به سایت های متقاطع نیاز به برخی از مفهوم جلسه یا حالت مداوم دارند که به فعالیت کاربر در یک سایت سطح بالا مانند: مانند:
- گپ شخص ثالث جاسازی می کند
- نقشه شخص ثالث جاسازی می شود
- تعبیه های پرداخت شخص ثالث
- تعادل بار CDN Subresource
- ارائه دهندگان CMS بدون سر
- دامنه های Sandbox برای خدمت به محتوای کاربر غیر قابل اعتماد (مانند GoogleuserContent.com و GitHubuserContent.com)
- CDN های شخص ثالث که از کوکی ها برای ارائه محتوا استفاده می کنند که توسط وضعیت احراز هویت در سایت شخص اول کنترل می شوند (به عنوان مثال ، تصاویر پروفایل در سایت های رسانه های اجتماعی میزبان CDN های شخص ثالث)
- چارچوب های جلویی که با استفاده از کوکی ها در درخواست های خود به API های از راه دور متکی هستند
- تبلیغات جاسازی شده که به هر ناشر نیاز به دولت دارند (به عنوان مثال ، ضبط تنظیمات تبلیغات کاربران برای آن وب سایت)
چرا چیپس از یک مدل تقسیم بندی انتخابی استفاده می کند
از آنجا که مرورگرها کوکی های شخص ثالث را به صورت غیرقانونی می گذرانند ، چند رویکرد دیگر برای تقسیم بندی تلاش شده است.
Firefox اعلام کرد که آنها به طور پیش فرض در حالت سخت ETP و حالت مرور خصوصی ، همه کوکی های شخص ثالث را تقسیم می کنند ، بنابراین تمام کوکی های متقاطع در سایت سطح بالا تقسیم می شوند. با این حال ، پارتیشن بندی کوکی های بدون انتخاب شخص ثالث می تواند منجر به اشکالات غیر منتظره شود ، زیرا برخی از خدمات شخص ثالث سرود هایی ساخته اند که انتظار یک کوکی شخص ثالث را ندارند.
سافاری قبلاً پارتیشن بندی کوکی ها را بر اساس اکتشافی امتحان کرده بود ، اما در نهایت تصمیم گرفت که آنها را به طور کلی مسدود کند و با اشاره به سردرگمی توسعه دهنده به عنوان یکی از دلایل. به تازگی ، سافاری ابراز علاقه به یک مدل مبتنی بر انتخاب .
آنچه تراشه ها را از پیاده سازی های موجود کوکی های تقسیم شده جدا می کند ، انتخاب شخص ثالث است. کوکی ها باید با یک ویژگی جدید تنظیم شوند تا در درخواست های متقابل یک بار (نامشخص) کوکی های شخص ثالث در منسوخ باشند.
در حالی که کوکی های شخص ثالث هنوز هم وجود دارند ، ویژگی 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 باز شود. - روی برگه برنامه کلیک کنید.
- به برنامه> ذخیره سازی> کوکی ها بروید.
- روی
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 باز شود. - روی برگه برنامه کلیک کنید.
- به برنامه> ذخیره سازی> کوکی ها بروید.
- کلیک راست در
https://chips-site-b.glitch.me
. - روی Clear کلیک کنید.
منابع
- GitHub : توضیح دهنده را بخوانید ، سؤالات را مطرح کنید و بحث را دنبال کنید .
- پشتیبانی توسعه دهنده : سؤال بپرسید و به بحث و گفتگو در مورد Repo پشتیبانی پشتیبانی توسعه دهنده Sandbox بپیوندید.