[OUTDATED] First-Party Sets ve SameParty özelliği

Birçok kuruluşun brandx.site ve fly-brandx.site gibi farklı alan adlarına veya example.com, example.rs, example.co.uk gibi farklı ülkelere ait alan adlarına sahip ilgili siteleri vardır.

Tarayıcılar, web'deki gizliliği iyileştirmek için üçüncü taraf çerezlerini kullanımdan kaldırma yönünde ilerliyor. Ancak bu tür siteler, alanlar arasında durum bilgisini yönetmeyi ve bu duruma erişmeyi gerektiren işlevler (ör. tek oturum açma ve izin yönetimi) için genellikle çerezlerden yararlanır.

Birinci Taraf Gruplar, aynı tüzel kişiliğe ait ve aynı tüzel kişi tarafından işletilen ilgili alan adlarının, birinci taraf ve üçüncü taraflara farklı şekilde muamele edildiği durumlarda birinci taraf olarak değerlendirilmesine izin verebilir. Birinci taraf grubundaki alan adları aynı taraf olarak kabul edilir ve aynı taraf bağlamında ayarlanması veya gönderilmesi amaçlanan çerezleri etiketleyebilir. Burada amaç, geçerli kullanım alanlarını ihlal etmeyen bir yol sürdürürken üçüncü tarafların siteler arası izlemeyi engellemek arasında denge kurmaktır.

Birinci Taraf Grup teklifi şu anda test aşamasındadır. Nasıl çalıştığını ve nasıl deneyebileceğinizi öğrenmek için okumaya devam edin.

Birinci taraf ve üçüncü taraf çerezleri arasındaki fark nedir?

Çerezler, doğası gereği birinci taraf veya üçüncü taraf değildir. Çerezler, çerezin dahil edildiği mevcut bağlama bağlıdır. Bu, cookie üst bilgisindeki bir istekte veya JavaScript'te document.cookie aracılığıyla gerçekleşmiştir.

Örneğin, video.site sitesinin bir theme=dark çerezi varsa video.site ürününe göz atarken video.site için istek yapıldığında bu aynı site bağlamı olur ve dahil edilen çerez birinci taraf olur.

Bununla birlikte, video.site için iframe oynatıcı yerleştiren my-blog.site üzerindeyseniz my-blog.site sitesinden video.site sitesine istek yapıldığında bu, siteler arası bağlam ve theme çerezi üçüncü taraf olur.

video.site sitesinden bir çerezi iki bağlamda gösteren şema. Üst düzey bağlam da video.site olduğunda çerez aynı sitededir. En üst düzey bağlam, iframe'de video.site ile birlikte blogum.sitem olduğunda çerez, siteler arası olur.

Çerez ekleme, çerezin SameSite özelliği tarafından belirlenir:

  • SameSite=Lax, Strict veya None ile yapılan aynı site bağlamı, çerezi birinci taraf yapar.
  • SameSite=None ile siteler arası bağlam, çerezi üçüncü taraf hale getirir.

Ancak bu her zaman net ve açık olmayabilir. brandx.site adlı sitenin bir seyahat rezervasyonu sitesi olduğunu ve uçuş ile araç kiralama işlemlerini ayırmak için fly-brandx.site ve drive-brandx.site kullandıklarını düşünün. Bir yolculuk rezervasyonu sırasında, ziyaretçiler farklı seçeneklerini belirlemek için bu siteler arasında geçiş yapar. "Alışveriş sepetleri" seçimlerinin bu sitelerde aynı kalmasını beklerler. brandx.site, siteler arası bağlamlarda izin vermek için kullanıcının oturumunu bir SameSite=None çereziyle yönetir. Ancak kötü tarafı, çerezin artık Siteler Arası İstek Sahtekarlığı (CSRF) korumasına sahip olmamasıdır. evil.site, brandx.site için bir istek içerirse bu çerez de dahil edilir.

Çerez siteler arasıdır, ancak tüm bu sitelerin sahibi ve aynı kuruluş aynı kuruluş tarafından işletilir. Ziyaretçiler aynı kuruluş olduğunu anlar ve aynı oturumun, diğer bir deyişle, aralarında ortak bir kimlik olmasını ister.

Siteler aynı Birinci Taraf Grubunun parçasıysa bir çerezin siteler arası bağlama hâlâ nasıl dahil edileceğini, ancak grubun dışındaki siteler arası bağlamlarda reddedileceğini gösteren şema.

Birinci Taraf Grup politikası

Birinci Taraf Grup, aynı tarafın sahip olduğu ve işlettiği birden çok sitede bu ilişkiyi açık bir şekilde tanımlamak için bir yöntem önerir. Bu işlem, brandx.site ürününün fly-brandx.site, drive-brandx.site vb. ile birinci taraf ilişkisini tanımlamasını sağlar.

Çeşitli Özel Korumalı Alan tekliflerini destekleyen Gizlilik Modeli, siteler arası izlemeyi engellemek için kimliği bölümlendirme kavramına dayanır. Bu model, kullanıcıları tanımlamak için kullanılabilecek tüm bilgilere erişimi kısıtlayan siteler arasında bir sınır çizmektir.

Aynı üçüncü taraf çerezine birden fazla siteler arası bağlamlarda erişilebildiği bir bölümlendirilmemiş durumu gösteren şema. Bunun aksine, her üst düzey bağlamın söz konusu sitelerdeki bağlantı etkinliğini engelleyen siteler arası çerezin ayrı bir örneğine sahip olduğu bölümlendirilmiş model.

Varsayılan seçenek, birinci taraf kullanım alanlarının çoğuna çözüm olan siteye göre bölümlendirme olsa da brandx.site örneği, birinci tarafın birden fazla siteden daha büyük olabileceğini göstermektedir.

Bir grup için aynı çerez örneğinin, tüm bu siteler aynı grubun parçası olduğunda siteler arası bağlamlara nasıl dahil edilebileceğini gösteren şema.

Birinci Taraf Grup teklifinin önemli bir parçası, tarayıcılar genelinde politikanın kötüye kullanımı veya hatalı kullanımı önlemesini sağlamaktır. Örneğin, Birinci Taraf Gruplar, alakasız siteler arasında kullanıcı bilgilerinin alışverişini veya aynı varlığa ait olmayan sitelerin gruplandırılmasını etkinleştirmemelidir. Buradaki fikir, Birinci Taraf Grubun bir kişinin birinci taraf olarak anladığı bir şeyle eşlenmesini ve kimliği farklı taraflar arasında paylaşma yöntemi olarak kullanılmamasını sağlamaktır.

Bir sitenin birinci taraf grubunu kaydetmesinin olası bir yolu, sitenin, önerilen alan adı grubunu tarayıcı politikasını karşılamak için gereken bilgilerle birlikte herkese açık bir izleyiciye (özel bir GitHub deposu gibi) göndermesi olabilir.

Birinci taraf grup onayı politikaya göre doğrulandıktan sonra tarayıcılar, güncelleme işlemi aracılığıyla grupların listelerini alabilir.

Kaynak denemesinin nihai olmayan tanımlı bir politikası vardır ancak ilkeler büyük olasılıkla aynı kalacaktır:

  • Birinci taraf gruptaki alanlar aynı kuruluşa ait olmalı ve aynı kuruluş tarafından işletilmelidir.
  • Alan adları, kullanıcılar tarafından grup olarak tanınabilmelidir.
  • Alanlar ortak bir gizlilik politikasını paylaşmalıdır.

Birinci taraf grubu tanımlama

Kuruluşunuzun birinci taraf grubunun üyelerini ve sahibini belirledikten sonra, önerdiğiniz grubu onaya göndermek son derece önemli bir adımdır. Tam süreç hâlâ tartışılmaktadır.

Birinci taraf grup tanımlamak için üyeleri ve sahipleri listeleyen statik JSON kaynakları dahil edilen her alanın en üst düzeyinde /.well-known/first-party-set adresinde barındırılmalıdır.

brandx birinci taraf grubu örneğinde, sahip-alan adı https://brandx.site/.well-known/first-party-set adresinde aşağıdakileri barındırır:

{
  "owner": "brandx.site",
  "version": 1,
  "members": ["fly-brandx.site", "drive-brandx.site"]
}

Ayrıca grubun her bir üyesi, grubun sahibine işaret eden statik bir JSON kaynağı barındırır. https://fly-brandx.site/.well-known/first-party-set etkinliğinde:

{ "owner": "brandx.site" }

Ve https://drive-brandx.site/.well-known/first-party-set adlı yerde:

{ "owner": "brandx.site" }

Birinci taraf kümeleri için birkaç kısıtlama söz konusudur:

  • Her grubun yalnızca bir sahibi olabilir.
  • Bir üye tek bir gruba ait olabilir, çakışma veya karışım olamaz.
  • Üye listesinin nispeten kullanıcılar tarafından okunabilecek şekilde kalması ve aşırı büyük olmaması amaçlanmıştır.

Birinci Taraf Gruplar çerezleri nasıl etkiler?

Çerezler için eşleşen bileşen, önerilen SameParty özelliğidir. SameParty belirtilmesi, içeriğin bağlamı üst düzey bağlam olarak aynı birinci taraf kümesinin bir parçası olduğunda tarayıcıya çerezi dahil etmesini sağlar.

Yani, brandx.site bu çerezi ayarlarsa:

Set-Cookie: session=123; Secure; SameSite=Lax; SameParty

Ardından, ziyaretçi fly-brandx.site üzerindeyken brandx.site adresine bir istek gittiğinde session çerezi bu isteğe dahil edilir. Birinci taraf grubunda yer almayan başka bir site (örneğin, hotel.xyz) brandx.site sitesine istek gönderirse çerez dahil edilmez.

Açıklandığı şekilde siteler arası bağlamlarda brandx.site çerezine izin verildiğini veya engellendiğini gösteren şema.

SameParty yaygın olarak desteklenene kadar, çerezler için yedek davranışı tanımlamak amacıyla bununla birlikte SameSite özelliğini kullanın. SameParty özelliğini, SameSite=Lax ile SameSite=None arasında bir ayar sağladığı için düşünebilirsiniz.

  • SameSite=Lax; SameParty, desteklenen yerlerde aynı taraf bağlamlarını içerecek şekilde Lax işlevini genişletir ancak desteklenmiyorsa Lax kısıtlamalarına geri döner.
  • SameSite=None; SameParty, desteklenen yerlerde None işlevini yalnızca aynı taraf içerikleriyle kısıtlar ancak desteklememesi durumunda daha kapsamlı olan None izinlerine geri döner.

Bazı ek şartlar vardır:

  • SameParty çerezleri Secure ürününü içermelidir.
  • SameParty çerezleri SameSite=Strict içermemelidir.

Bu hâlâ siteler arası olduğundan Secure zorunludur ve güvenli (HTTPS) bağlantılar sağlayarak bu riskleri azaltmanız gerekir. Benzer şekilde, bu da siteler arası bir ilişki olduğundan SameSite=Strict yine de bir grup içinde sıkı bir şekilde site tabanlı CSRF korumasına izin verdiği için geçersizdir.

Birinci Taraf Gruplar için hangi kullanım alanları doğrudur?

Birinci Taraf Gruplar, bir kuruluşun farklı üst düzey sitelerde bir tür paylaşılan kimliğe ihtiyaç duyduğu durumlar için iyi bir eşleşmedir. Bu durumda paylaşılan kimlik, tam tek oturum açma çözümünden siteler arasında paylaşılan bir tercihe ihtiyaç duymaya kadar her şey anlamına gelir.

Kuruluşunuzun aşağıdakiler için farklı üst düzey alanları olabilir:

  • Uygulama alanları: office.com,live.com, microsoft.com
  • Markalı alanlar: amazon.com, audible.com / disney.com, pixar.com
  • Yerelleştirmenin etkinleştirileceği ülkeye özgü alan adları: google.co.in, google.co.uk
  • Kullanıcıların hiçbir zaman doğrudan etkileşimde bulunmadığı ancak aynı kuruluşun sitelerinde hizmet sunduğu hizmet alanları: gstatic.com, githubassets.com, fbcdn.net
  • Kullanıcıların hiçbir zaman doğrudan etkileşimde bulunmadığı, ancak güvenlik nedeniyle mevcut korumalı alan alanları: googleusercontent.com, githubusercontent.com

Nasıl katılabilirsiniz?

Yukarıdaki kriterlere uyan bir site grubunuz varsa, çeşitli yöntemlerle katılabilirsiniz. Yapabileceğiniz en kolay yatırım, iki teklif hakkındaki tartışmayı okuyup katılmaktır:

Test aşamasında, --use-first-party-set komut satırı işaretini kullanıp sitelerin virgülle ayrılmış bir listesini sağlayarak işlevselliği deneyebilirsiniz.

Chrome'u başlattıktan sonra aşağıdaki işaretle https://fps-member1.glitch.me/ adresindeki demo sitesinde bu işlemi deneyebilirsiniz:

--use-first-party-set=https://fps-member1.glitch.me,https://fps-member2.glitch.me,https://fps-member3.glitch.me

Geliştirme ortamınızda test yapmak veya birinci taraf grubunun çerezleri nasıl etkileyeceğini görmek için canlı bir ortamda SameParty özelliğini eklemeyi denemek istiyorsanız bu yöntem faydalı olacaktır.

Denemeler ve geri bildirim için yeterli bant genişliğiniz varsa Chrome'da 89 ile 93 arası sürümleri kullanarak sunulan Birinci Taraf Gruplar ve SameParty için Kaynak Deneme'ye de kaydolabilirsiniz.

Kaynak denemesi için çerezleri güncelleme

Kaynak denemesine katılıyor ve çerezlerinizdeki SameParty özelliğini test ediyorsanız dikkate almanız gereken iki kalıp vardır.

1. Seçenek

Öncelikle, SameSite=None olarak etiketlediğiniz çerezleriniz olduğu halde bu verileri birinci taraf bağlamlarıyla kısıtlamak istiyorsanız bunlara SameParty özelliğini ekleyebilirsiniz. Kaynak denemesinin etkin olduğu tarayıcılarda çerez, grubun dışındaki siteler arası bağlamlarda gönderilmez.

Ancak, kaynak denemesi dışındaki tarayıcıların çoğunluğu için çerez, her zamanki gibi siteler arası gönderilmeye devam eder. Bunu, ilerlemeye yönelik bir yaklaşım olarak düşünebilirsiniz.

Önce: set-cookie: cname=cval; SameSite=None; Secure

Sonra: set-cookie: cname=cval; SameSite=None; Secure; SameParty

2. Seçenek

İkinci seçenek daha fazla çalışma olanağı sunar ancak kaynak denemesini mevcut işlevlerden tamamen ayırmanıza imkan tanır ve özellikle SameSite=Lax; SameParty kombinasyonunun test edilmesine olanak tanır.

Önce: set-cookie: cname=cval; SameSite=None; Secure

Sonra:

set-cookie: cname=cval; SameSite=None; Secure
set-cookie: cname-fps=cval; SameSite=Lax; Secure; SameParty

Gelen isteklerde çerez olup olmadığını kontrol ederken, yalnızca dahil olan siteler kümede yer alıyorsa ve tarayıcı kaynak denemesindeyse siteler arası istekte cname-fps çerezini görmeyi beklersiniz. Bu yaklaşımı, önceki sürümü kapatmadan önce güncellenmiş bir özelliğin eş zamanlı olarak kullanıma sunulması gibi düşünün.

Neden birinci taraf grubuna ihtiyacınız olmayabilir?

Çoğu sitenin site sınırı, bölüm veya gizlilik sınırını çizmek için kabul edilebilir bir yerdir. Bu, CHIPS (Bağımsız Bölümlü Duruma Sahip Çerezler) ile teklif edilen rotadır. Bu rota, sitelere Partitioned özelliği üzerinden tercih etme rotasını sağlar. Bu rota, söz konusu kritik siteler arası yerleştirme, kaynak, API ve hizmetlere sahip olmaya devam eder ve kimlik bilgilerinin siteler arasında sızdırılmasını önler.

Sitenizin bir sete ihtiyaç duymadan iyi olabileceği anlamına gelen, göz önünde bulundurmanız gereken birkaç nokta daha:

  • Barındırıcınız farklı siteler yerine farklı kaynaklar üzerinden yapılır. Yukarıdaki örnekte, brandx.site alanında fly.brandx.site ve drive.brandx.site varsa bunların tamamı aynı site içinde bulunan farklı alt alanlardır. Çerezler SameSite=Lax kullanabilir ve herhangi bir ayar yapılmasına gerek yoktur.
  • Diğer sitelere üçüncü taraf yerleştirmeleri sağlıyorsanız. Giriş bölümünde, video.site sitesinden my-blog.site sitesine yerleştirilmiş bir videonun örneği, net bir üçüncü taraf dağılımına sahiptir. Siteler farklı kuruluşlar tarafından işletilmektedir ve kullanıcılar bunları ayrı varlıklar olarak görür. Bu iki site birlikte bir kümede olmamalıdır.
  • Üçüncü taraf sosyal oturum açma hizmetleri sunuyorsanız. OAuth veya OpenId bağlantısı gibi teknolojilerden yararlanan kimlik sağlayıcılar, kullanıcılara daha sorunsuz bir oturum açma deneyimi sunmak için genellikle üçüncü taraf çerezlerinden yararlanır. Bu geçerli bir kullanım alanı olsa da kuruluşlar arasında net bir fark olduğundan Birinci Taraf Gruplar için uygun değildir. WebID gibi ilk teklifler, bu kullanım alanlarını etkinleştirmenin yollarını arıyor.