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

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

Tarayıcılar, web'de gizliliği iyileştirmek için üçüncü taraf çerezlerini kullanımdan kaldırmaya yöneliyor ancak bu tür siteler, alanlar arasında durumu korumayı ve erişmeyi gerektiren işlevler (ör. tek oturum açma ve izin yönetimi) için genellikle çerezlerden yararlanır.

Birinci Taraf Kümeleri, birinci taraf ve üçüncü tarafın farklı şekilde ele alındığı durumlarda, aynı tüzel kişiye ait ve bu tüzel kişi tarafından işletilen ilgili alan adlarının birinci taraf olarak ele alınmasına olanak tanıyabilir. Birinci taraf grubundaki alan adları aynı taraf olarak kabul edilir ve hangi çerezlerin aynı taraf bağlamında ayarlanacağı veya gönderileceği etiketlenebilir. Amaç, üçüncü tarafların siteler arası izlemesini önleme ile geçerli kullanım alanlarını bozmayan bir yol sürdürme arasında denge bulmaktır.

Birinci taraf grupları 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. Bu durum, çerezin dahil edildiği mevcut bağlama bağlıdır. Bu, cookie üstbilgisinde bir istek veya JavaScript'te document.cookie aracılığıyla yapılır.

Örneğin, video.site'te bir theme=dark çerezi varsa video.site'ye göz atarken video.site'e bir istek gönderilirse bu aynı site bağlamı olur ve dahil edilen çerez birinci taraf olur.

Ancak video.site için bir iframe oynatıcıyı yerleştiren my-blog.site sitesindeyseniz my-blog.site'ten video.site'e istek gönderildiğinde bu siteler arası bağlamdır ve theme çerezi üçüncü taraf çerezidir.

video.site adresindeki bir çerezi iki bağlamda gösteren şema. Üst düzey bağlam da video.site olduğunda çerez aynı sitededir. Üst düzey bağlam, bir iFrame'de video.site ile my-blog.site olduğunda çerez siteler arasıdır.

Çerezin dahil edilmesi, çerezin SameSite özelliğine göre belirlenir:

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

Ancak bu durum her zaman net değildir. brandx.site'ün bir seyahat rezervasyon sitesi olduğunu ve uçuş ile kiralık araç rezervasyonlarını ayırmak için fly-brandx.site ve drive-brandx.site'yi kullandığını varsayalım. Ziyaretçiler, bir seyahat rezervasyonu sırasında farklı seçenekleri belirlemek için bu siteler arasında geçiş yapar. Seçimlerin bulunduğu "alışveriş sepetlerinin" bu sitelerde kalmasını beklerler. brandx.site, siteler arası bağlamlarda izin vermek için kullanıcının oturumunu SameSite=None çereziyle yönetir. Bunun dezavantajı ise çerezin artık Siteler Arası İstek Sahteciliği (CSRF) korumasına sahip olmamasıdır. evil.site, brandx.site için bir istek içeriyorsa bu çerezi de içerir.

Çerez siteler arasıdır ancak bu sitelerin tümü aynı kuruluşa aittir ve aynı kuruluş tarafından işletilir. Ziyaretçiler de aynı kuruluşun olduğunu anlar ve aynı oturumu, yani paylaşılan bir kimliği ister.

Siteler aynı birinci taraf grubunun parçasıysa bir çerezin siteler arası bağlama nasıl dahil edilebileceğini ancak grubun dışındaki siteler arası bağlamlar için reddedileceğini gösteren diyagram.

First-Party Sets politikası

Birinci Taraf Gruplar, aynı tarafa ait ve aynı taraf tarafından işletilen birden fazla sitede bu ilişkiyi açık bir şekilde tanımlamak için bir yöntem önerir. Bu sayede brandx.site, fly-brandx.site ve drive-brandx.site ile birinci taraf ilişkisini tanımlayabilir.

Çeşitli Özel Korumalı Alan tekliflerini yönlendiren Gizlilik Modeli, siteler arası izlemeyi önlemek için kimliği bölme konseptine dayanır. Bu konsept, kullanıcıları tanımlamak için kullanılabilecek bilgilere erişimi sınırlayan siteler arasında bir sınır çizer.

Her üst düzey bağlamda, bu siteler arasında bağlantı oluşturma etkinliğini engelleyen siteler arası çerezin ayrı bir örneğinin bulunduğu bölümlenmiş bir modelin aksine, aynı üçüncü taraf çerezine birden fazla siteler arası bağlamda erişilebilen bölümlenmemiş durumu gösteren şema.

Varsayılan seçenek, siteye göre bölümlendirme yapmaktır. Bu seçenek, birçok birinci taraf kullanım alanını çözer. brandx.site örneğinde ise birinci tarafın tek bir siteden daha büyük olabileceği gösterilmektedir.

Bir gruptaki çerezin aynı örneğinin, tüm siteler aynı grubun parçası olduğunda siteler arası bağlamlara nasıl dahil edilebileceğini gösteren diyagram.

Birinci Taraf Grupları teklifinin önemli bir kısmı, tarayıcılar genelindeki politikanın kötüye kullanımı veya hatalı kullanımı önlemesini sağlamaktır. Örneğin, birinci taraf kümeleri, alakasız siteler arasında kullanıcı bilgilerinin alışverişini veya aynı tüzel kişiye ait olmayan sitelerin gruplandırılmasını etkinleştirmemelidir. Amaç, bir birinci taraf grubunun kullanıcının birinci taraf olarak anladığı bir öğeyle eşlenmesini sağlamak ve farklı taraflar arasında kimlik paylaşımı yöntemi olarak kullanılmamasını sağlamaktır.

Bir sitenin birinci taraf grubunu kaydettirmesinin olası yollarından biri, önerdiği alan grubunu, tarayıcı politikasını karşılamak için gereken bilgilerle birlikte herkese açık bir izleyiciye (ör. özel bir GitHub deposu) göndermesidir.

Birinci taraf grubu beyanı politikaya uygun şekilde doğrulandıktan sonra tarayıcılar, güncelleme işlemi aracılığıyla grup listelerini getirebilir.

Kaynak denemesi için nihai olmamakla birlikte belirli bir politika vardır ancak ilkelerin aynı kalacağı muhtemeldir:

  • Birinci taraf grubundaki alanların sahibi ve işletmecisi aynı kuruluş olmalıdır.
  • Alanlar, kullanıcılar tarafından grup olarak tanınabilir olmalıdır.
  • Alanlar ortak bir gizlilik politikasına sahip olmalıdır.

Birinci taraf grubu nasıl tanımlanır?

Kuruluşunuzun birinci taraf kümesinin üyelerini ve sahibini belirledikten sonra, önerilen kümenizi onay için göndermeniz önemli bir adımdır. Tam süreç hâlâ tartışılıyor.

First-Party Set beyan etmek için üyeleri ve sahipleri listeleyen statik JSON kaynakları, dahil edilen her alanın üst düzeyinde /.well-known/first-party-set adresinde barındırılmalıdır.

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

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

Kümenin her üyesi, kümenin sahibine işaret eden statik bir JSON kaynağı da barındırır. https://fly-brandx.site/.well-known/first-party-set'te:

{ "owner": "brandx.site" }

https://drive-brandx.site/.well-known/first-party-set'te:

{ "owner": "brandx.site" }

Birinci taraf gruplar için birkaç kısıtlama vardır:

  • Bir grubun yalnızca bir sahibi olabilir.
  • Bir üye yalnızca bir gruba ait olabilir. Çakışma veya karışım olamaz.
  • Üye listesinin, kullanıcılar tarafından okunabilir ve aşırı büyük olmayan bir boyutta kalması amaçlanır.

First-Party Sets, çerezleri nasıl etkiler?

Çerezlerle eşleşen bileşen, önerilen SamePartyözelliğidir. SameParty belirtildiğinde tarayıcı, bağlamı üst düzey bağlamla aynı birinci taraf kümesinin parçası olduğunda çerezi dahil eder.

Yani brandx.site bu çerezi ayarlarsa:

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

Ardından, ziyaretçi fly-brandx.site'teyken brandx.site'e bir istek gönderildiğinde session çerezi bu isteğe dahil edilir. Birinci taraf grubunun parçası olmayan başka bir site (ör. hotel.xyz) brandx.site'a istek gönderirse çerez dahil edilmez.

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

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

  • SameSite=Lax; SameParty, desteklendiğinde Lax işlevini aynı taraf bağlamlarını içerecek şekilde genişletir ancak desteklenmediği durumlarda Lax kısıtlamalarına geri döner.
  • SameSite=None; SameParty, None işlevini desteklendiğinde yalnızca aynı taraf bağlamlarıyla kısıtlar ancak desteklenmediği durumlarda daha geniş None izinlerine geri döner.

Bazı ek koşullar vardır:

  • SameParty çerezleri Secure öğesini içermelidir.
  • SameParty çerezleri SameSite=Strict içermemelidir (

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

Birinci taraf gruplar için hangi kullanım alanları uygundur?

Birinci taraf grupları, bir kuruluşun farklı üst düzey sitelerde ortak kimlik biçimine ihtiyaç duyduğu durumlarda iyi bir seçimdir. Bu durumda paylaşılan kimlik, tam tek oturum açma çözümünden siteler arasında paylaşılan bir tercihe ihtiyaç duymaya kadar her şeyi ifade eder.

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ştirmeyi etkinleştirmek için ülkeye özel alanlar: google.co.in, google.co.uk
  • Kullanıcıların hiçbir zaman doğrudan etkileşimde bulunmadığı ancak aynı kuruluşun sitelerinde hizmet sağlayan hizmet alanları: gstatic.com, githubassets.com, fbcdn.net
  • Kullanıcıların hiçbir zaman doğrudan etkileşimde bulunmadığı ancak güvenlik nedeniyle var olan korumalı alan alanları: googleusercontent.com, githubusercontent.com

Nasıl katılabilirsiniz?

Yukarıdaki ölçütlere uyan bir site grubunuz varsa programa katılmak için çeşitli seçenekleriniz vardır. En az yatırım, iki öneriyi okuyup tartışmaya katılmaktır:

Test aşamasında, --use-first-party-set komut satırı işaretini kullanarak ve virgülle ayrılmış bir site listesi sağlayarak işlevi deneyebilirsiniz.

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

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

Bu, geliştirme ortamınızda test etmek istiyorsanız veya birinci taraf kümesinin çerezleri nasıl etkileyeceğini görmek için SameParty özelliğini canlı bir ortama eklemeyi denemek istiyorsanız yararlıdır.

Deneme ve geri bildirim için bant genişliğiniz varsa Chrome'un 89 ile 93 arasındaki sürümlerinde kullanılabilen First Party Sets ve SameParty için Kaynak Deneme Sürümü'ne de kaydolabilirsiniz.

Kaynak denemesi için çerezleri güncelleme

Kaynak denemesine katılıyor ve çerezlerinizde SameParty özelliğini test ediyorsanız göz önünde bulundurmanız gereken iki kalıp vardır.

1. Seçenek

Öncelikle, SameSite=None olarak etiketlediğiniz ancak birinci taraf bağlamlarıyla kısıtlamak istediğiniz çerezlere SameParty özelliğini ekleyebilirsiniz. Kaynak deneme sürümünün 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ğunda çerez, her zamanki gibi siteler arası olarak gönderilmeye devam eder. Bunu aşamalı bir geliştirme yaklaşımı olarak değerlendirin.

Ö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 iş gerektirir ancak kaynak denemeyi mevcut işlevlerden tamamen ayırmanıza 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 çerezi kontrol ederken, cname-fps çerezini yalnızca siteler arası bir istekte görebilirsiniz. Bunun için ilgili sitelerin sette olması ve tarayıcının kaynak denemesinde olması gerekir. Bu yaklaşımı, önceki sürümü kullanımdan kaldırmadan önce güncellenmiş bir özelliğin eşzamanlı olarak kullanıma sunulması olarak düşünebilirsiniz.

Birinci taraf kümesine neden ihtiyaç duymayabilirsiniz?

Çoğu site için bölüm veya gizlilik sınırını çizmek üzere site sınırı kabul edilebilir bir yerdir. Bu, CHIPS (Bağımsız Bölünmüş Duruma Sahip Çerezler) ile önerilen yoldur. Bu yol, sitelere Partitioned özelliği aracılığıyla etkinleştirme yolu sunar. Bu sayede siteler, siteler arasında kimlik bilgilerinin sızmasını önlerken siteler arası kritik yerleşimleri, kaynakları, API'leri ve hizmetleri kullanmaya devam edebilir.

Sitenizin, ayarlara gerek kalmadan iyi durumda olabileceğini gösteren diğer bazı noktalar:

  • Farklı siteler değil, farklı kaynaklarda barındırma yaparsınız. Yukarıdaki örnekte, brandx.site'te fly.brandx.site ve drive.brandx.site varsa bunlar aynı sitedeki farklı alt alan adlarıdır. Çerezler SameSite=Lax kullanabilir ve ayarlama gerekmez.
  • Diğer sitelere üçüncü taraf yerleşimleri sağlıyorsanız Girişteki video.site'ten my-blog.site'a yerleştirilmiş video örneği, açık bir üçüncü taraf ayırımıdır. Siteler farklı kuruluşlar tarafından işletilir ve kullanıcılar bunları ayrı varlıklar olarak görür. Bu iki site aynı grupta olmamalıdır.
  • Üçüncü taraf sosyal oturum açma hizmetleri sağlıyorsanız. OAuth veya OpenId Connect gibi teknolojileri kullanan kimlik sağlayıcılar, kullanıcılara daha sorunsuz bir oturum açma deneyimi sunmak için genellikle üçüncü taraf çerezlerine ihtiyaç duyar. Bu geçerli bir kullanım alanı olsa da kuruluşlar arasında belirgin bir fark olduğu için First-Party Sets için uygun değildir. WebID gibi ilk teklifler, bu kullanım alanlarını etkinleştirmenin yollarını araştırıyor.