Geliştiricilerin, üst düzey site başına ayrı bir çerez kavanozuyla çerezleri "bölümlendirilmiş" depolamaya dahil etmesine izin verilir.
Uygulama durumu
- Chrome 114 ve sonraki sürümlerde varsayılan olarak desteklenir.
- Chrome 100 ve 116 sürümlerinde kaynak denemesi artık tamamlandı.
- Deneme Amacı ve Gönderim Amacı bölümlerini okuyun.
CHIPS nedir?
Bağımsız Bölümlendirme Durumuna Sahip Çerezler (CHIPS), geliştiricilerin bir çerezi bölümlendirilmiş depolamaya dahil etmesine olanak tanır. Üst düzey site başına ayrı çerez kavanozları sayesinde kullanıcı gizliliği ve güvenliği iyileştirilir.
Bölümleme olmadan üçüncü taraf çerezleri, hizmetlerin kullanıcıları izlemesine ve bilgilerini birçok alakasız üst düzey siteden birleştirmesine olanak tanır. Bu, siteler arası izleme olarak bilinir.
Üçüncü taraf çerezleri engellendiğinde, siteler arası bağlamlardaki (ör. iFrame'ler) çerezleri okumanın ve yazmanın tek yolu CHIPS, Storage Access API ve İlişkili Websitesi Grupları'dır.

CHIPS, üst düzey bağlama göre bölümlendirilmiş siteler arası çerezleri desteklemek için yeni bir çerez özelliği (Partitioned
) sunar.
Set-Cookie başlığı:
Set-Cookie: __Host-name=value; Secure; Path=/; SameSite=None; Partitioned;
JavaScript:
document.cookie="__Host-name=value; Secure; Path=/; SameSite=None; Partitioned;"
Bölümlendirilmiş üçüncü taraf çerezleri, ilk olarak ayarlandığı üst düzey siteye bağlıdır ve başka bir yerden erişilemez. Bu sayede, üçüncü taraf hizmeti tarafından ayarlanan çerezler yalnızca ilk olarak ayarlandıkları üst düzey sitenin aynı yerleştirilmiş bağlamında okunabilir.

Bölümlendirilmiş çerezlerde, bir kullanıcı A sitesini ziyaret ettiğinde ve C sitesinden yerleştirilmiş içerik, Partitioned özelliğiyle bir çerez ayarladığında çerez, yalnızca C sitesinin A sitesine yerleştirildiğinde ayarladığı çerezler için belirlenmiş bölümlendirilmiş bir kavanoza kaydedilir. Tarayıcı, bu çerezi yalnızca üst düzey site A olduğunda gönderir.
Kullanıcı yeni bir siteyi (ör. B sitesi) ziyaret ettiğinde, yerleştirilmiş bir C çerçevesi, C sitesi A'ya yerleştirildiğinde ayarlanan çerezi almaz.
Bir kullanıcı C sitesini üst düzey bir web sitesi olarak ziyaret ederse C'nin A'ya yerleştirildiği sırada ayarladığı bölümlenmiş çerez de bu istekte gönderilmez.

Kullanım alanları
Örneğin, retail.example
sitesi, sitesine bir destek sohbet kutusu yerleştirmek için support.chat.example
adlı üçüncü taraf hizmetiyle çalışmak isteyebilir. Günümüzde birçok yerleştirilebilir sohbet hizmeti, durumu kaydetmek için çerezleri kullanır.

support.chat.example
.Siteler arası çerez ayarlama özelliği olmadan support.chat.example
, durumu depolamak için genellikle daha karmaşık olan alternatif yöntemler bulmak zorunda kalır. Alternatif olarak, support.chat.example
komut dosyasının retail.example üzerinde kimlik doğrulama çerezlerine erişme gibi daha yüksek ayrıcalıklara sahip olmasına izin verdiği için risklere yol açan üst düzey sayfaya yerleştirilmesi gerekir.
CHIPS, bölümleme yapılmamış çerezlerle ilişkili riskler olmadan siteler arası çerezleri kullanmaya devam etmek için daha kolay bir seçenek sunar.
CHIPS'in kullanım alanlarına örnek olarak, siteler arası alt kaynakların tek bir üst düzey sitedeki kullanıcı etkinliğiyle sınırlı bir oturum veya kalıcı durum kavramı gerektirdiği tüm senaryolar verilebilir. Örneğin:
- Üçüncü taraf sohbet yerleştirmeleri
- Üçüncü taraf harita yerleştirmeleri
- Üçüncü taraf ödeme yerleştirmeleri
- Alt kaynak CDN yük dengeleme
- Gözetimsiz İYS sağlayıcıları
- Güvenilmeyen kullanıcı içeriği sunmak için kullanılan korumalı alan adları (ör. googleusercontent.com ve githubusercontent.com)
- Birinci taraf sitesindeki kimlik doğrulama durumuyla erişimi kontrol edilen içerikleri sunmak için çerezleri kullanan üçüncü taraf CDN'leri (ör. üçüncü taraf CDN'lerinde barındırılan sosyal medya sitelerindeki profil resimleri)
- İsteklerinde çerez kullanan uzak API'lere dayanan ön uç çerçeveleri
- Yayıncıya göre kapsamı belirlenmesi gereken yerleştirilmiş reklamlar (örneğin, kullanıcıların söz konusu web sitesiyle ilgili reklam tercihlerini yakalama)
CHIPS neden etkinleştirme tabanlı bir bölümleme modeli kullanır?
Bölümlenmemiş üçüncü taraf çerezlerine erişimin engellendiği durumlarda, bölümlendirme için başka yaklaşımlar da denenmiştir.
Firefox, ETP Strict modunda ve özel tarama modunda tüm üçüncü taraf çerezlerini varsayılan olarak bölümlendirdiğini duyurdu. Bu nedenle, tüm siteler arası çerezler üst düzey siteye göre bölümlendiriliyor. Ancak üçüncü taraf katılımı olmadan çerezlerin bölümlendirilmesi, bazı üçüncü taraf hizmetlerinin bölümlendirilmemiş bir üçüncü taraf çerezi bekleyen sunucular oluşturması nedeniyle beklenmedik hatalara yol açabilir.
Safari daha önce çerezleri sezgisel yöntemlere göre bölmeyi denemiş ancak geliştiricilerin kafasının karışmasını nedenlerden biri olarak göstererek sonunda çerezleri tamamen engellemeyi tercih etmiştir. Safari yakın zamanda izin tabanlı bir modelle ilgilendiğini belirtti.
CHIPS'i mevcut bölümlendirilmiş çerez uygulamalarından ayıran özellik, üçüncü taraf katılımıdır. (Bölümlere ayrılmamış) üçüncü taraf çerezleri kullanımdan kaldırıldıktan sonra taraflar arası isteklerde gönderilebilmeleri için çerezlere yeni bir özellik eklenmesi gerekir.
Üçüncü taraf çerezleri hâlâ mevcut olsa da Partitioned
özelliği, daha kısıtlayıcı ve daha güvenli bir çerez davranışına izin verme seçeneği sunar. CHIPS, hizmetlerin üçüncü taraf çerezlerinin olmadığı bir geleceğe sorunsuz geçiş yapmasına yardımcı olacak önemli bir adımdır.
Çerez bölümlendirme teknik tasarımı
Günümüzde çerezler, bunları ayarlayan sitenin ana makine adına veya alan adına göre anahtarlanır. Diğer bir deyişle, ana makine anahtarı kullanılır.
Örneğin, https://support.chat.example
alanından gelen çerezler için ana makine anahtarı ("support.chat.example")
olur.
CHIPS kapsamında, bölümlendirmeyi etkinleştiren çerezler, anahtar anahtarları ve bölüm anahtarları ile çift anahtarlı olur.
Çerezin bölüm anahtarı, tarayıcının çerezi ayarlayan uç noktaya istek göndermeye başladığında ziyaret ettiği üst düzey URL'nin sitesidir (şema ve kaydedilebilir alan).
Daha önceki örnekte, https://support.chat.example
öğesinin https://retail.example
öğesine yerleştirildiği durumda üst düzey URL https://retail.example
olur.
Bu durumda bölüm anahtarı ("https", "retail.example")
olur.
Benzer şekilde, isteğin bölüm anahtarı, tarayıcının bir isteğin başlangıcında ziyaret ettiği üst düzey URL'nin sitesidir. Tarayıcılar, yalnızca bu çerezle aynı bölüm anahtarına sahip isteklerde Partitioned
özelliğine sahip bir çerez göndermelidir.
Önceki örnekteki çerez anahtarının CHIPS'ten önce ve sonra nasıl göründüğünü aşağıda görebilirsiniz.

CHIPS'ten önce
key=("support.chat.example")
CHIPS'ten sonra
key={("support.chat.example"),("https", "retail.example")}
Güvenlik tasarımı
CHIPS ile iyi güvenlik uygulamalarını teşvik etmek için çerezler yalnızca güvenli protokoller tarafından ayarlanır ve bu protokoller üzerinden gönderilir.
- Bölümlendirilmiş çerezler
Secure
ile ayarlanmalıdır. - Bölümlenmiş çerezleri ana makine adına (kayıt edilebilir alan adına değil) bağlı hale getirmek için
__Host-
önekini kullanmanız önerilir.
Örnek:
Set-Cookie: __Host-example=34d8g; SameSite=None; Secure; Path=/; Partitioned;
CHIPS'e alternatifler
Storage Access API ve ilişkili İlişkili Web Sitesi Grupları (RWS), belirli ve kullanıcıya yönelik amaçlar için sınırlı siteler arası çerez erişimini etkinleştirmeye yönelik web platformu mekanizmalarıdır.
Bunlar, siteler arası, bölümlenmemiş çerezlere erişimin gerekli olduğu CHIPS bölümlendirmesine alternatiflerdir.
Aynı çerezin birden fazla ilişkili siteye yerleştirilmiş bir hizmet tarafından kullanılabilmesi gerektiği durumlarda Storage Access API ve İlişkili Web Sitesi Grupları'nı kullanabilirsiniz.
CHIPS, bir hizmetin birden fazla sitede yalıtılmış bir bileşen olarak hareket etmesini sağlar. Bu durumda aynı çerezin birden fazla sitede kullanılabilir olması gerekmez. Hizmet, bölümlendirilmiş bir çerez ayarlarsa bölüm anahtarı üst düzey site olur ve bu çerez, hizmeti kullanan diğer siteler tarafından kullanılamaz.
İlişkili Web Sitesi Grupları tasarımı, Storage Access API'yi kullanır ve CHIPS bölümlendirmesiyle entegre olmaz. Bir RWS içindeki sitelerde paylaşılan çerez bölümüne dayanan bir kullanım alanınız varsa GitHub sorununda örnekler ve geri bildirimler paylaşabilirsiniz.
Demo
Bu demo, bölümlenmiş çerezlerin nasıl çalıştığını ve bunları Geliştirici Araçları'nda nasıl inceleyebileceğinizi gösterir.
A sitesi, B sitesinden bir iFrame yerleştirir. Bu iFrame, bölümlere ayrılmış ve ayrılmamış olmak üzere iki çerez ayarlamak için JavaScript kullanır. B sitesi, document.cookie
kullanılarak o konumdan erişilebilen tüm çerezleri gösterir.
Üçüncü taraf çerezleri engellendiğinde B sitesi, siteler arası bağlamda yalnızca Partitioned
özelliğine sahip çerezi ayarlayabilir ve bu çereze erişebilir.
Üçüncü taraf çerezlerine izin verildiğinde B sitesi de bölümlenmemiş çerezi ayarlayabilir ve erişebilir.

Ön koşullar
- Chrome 118 veya sonraki sürümler
chrome://flags/#test-third-party-cookie-phaseout
adresini ziyaret edip bu ayarı etkinleştirin.
Bölümlendirilmiş çerezleri incelemek için Geliştirici Araçları'nı kullanma
- https://chips-site-a.glitch.me adresini ziyaret edin.
- Geliştirici Araçları'nı açmak için
Control+Shift+J
(veya Mac'teCommand+Option+J
) tuşuna basın. - Uygulama sekmesini tıklayın.
- Uygulama > Depolama > Çerezler'e gidin.
https://chips-site-b.glitch.me
simgesini tıklayın.
Geliştirici Araçları, seçilen kaynaktaki tüm çerezleri gösterir.

B sitesi, bölümlenmiş çerezi yalnızca siteler arası bağlamda ayarlayabilir. Bölümlenmemiş çerez engellenir:
- Üst düzey sitenin bölüm anahtarıyla birlikte
__Host-partitioned-cookie
simgesini görürsünüzhttps://chips-site-a.glitch.me
.

- B sitesine git'i tıklayın.
- Geliştirici Araçları'nda Uygulama > Depolama > Çerezler'e gidin.
https://chips-site-b.glitch.me
simgesini tıklayın.

Bu senaryoda, üst düzey bağlamda B sitesinde olduğunuz için her iki çerezi de ayarlayabilir ve bunlara erişebilir:
unpartitioned-cookie
adlı kullanıcının boş bir bölüm anahtarı var.__Host-partitioned-cookie
çerezindehttps://chips-site-b.glitch.me
bölüm anahtarı var.

Site A'ya geri dönerseniz unpartitioned-cookie
artık tarayıcıda depolanır ancak site A'dan erişilemez.
- A sitesine git'i tıklayın.
- Ağ sekmesini tıklayın.
https://chips-site-b.glitch.me
simgesini tıklayın.- Cookies (Çerezler) sekmesini tıklayın.
A sitesindeyken, üst düzey sitenin bölüm anahtarıyla birlikte __Host-partitioned-cookie
simgesini görmeniz gerekir https://chips-site-a.glitch.me
.

Filtreyle hariç tutulan çerez isteklerini göster'i işaretlerseniz Geliştirici Araçları, bölümleme yapılmamış çerezin engellendiğini gösterir ve "Bu çerez, kullanıcı tercihleri nedeniyle engellendi" ipucuyla birlikte sarı renkte vurgular.

Uygulama > Depolama > Çerezler'de https://chips-site-b.glitch.me
simgesini tıkladığınızda şunlar gösterilir:
unpartitioned-cookie
boş bölüm anahtarıyla.__Host-partitioned-cookie
bölüm anahtarıyla çerezhttps://chips-site-a.glitch.me
.

__Host-partitioned-cookie
çerezinde https://chips-site-a.glitch.me
bölüm anahtarı var. unpartitioned-cookie
gösteriliyor ancak site A'ya yerleştirildiğinde site B iframe'i tarafından erişilemiyor.Çerezleri temizle
Demoyu sıfırlamak için siteyle ilgili tüm çerezleri temizleyin:
- Geliştirici Araçları'nı açmak için
Control+Shift+J
(veya Mac'teCommand+Option+J
) tuşuna basın. - Uygulama sekmesini tıklayın.
- Uygulama > Depolama > Çerezler'e gidin.
https://chips-site-b.glitch.me
simgesini sağ tıklayın.- Temizle'yi tıklayın.
Kaynaklar
- GitHub: Açıklamayı okuyun, soru sorun ve tartışmayı takip edin.
- Geliştirici desteği: Privacy Sandbox Developer Support deposunda soru sorun ve tartışmalara katılın.