SameSite çerezleri hakkında açıklama

Tarayıcı desteği

  • Chrome: 51.
  • Edge: 16.
  • Firefox: 60.
  • Safari: 13.

Kaynak

Her çerez, bir anahtar/değer çiftinin yanı sıra çerezin ne zaman ve nerede kullanılacağını kontrol eden bir dizi özellik içerir.

SameSite özelliğinin (RFC6265bis'te tanımlanmıştır) kullanıma sunulması, çerezinizin birinci tarafla mı yoksa aynı site bağlamıyla mı kısıtlandığını belirtmenize olanak tanır. Burada "site"nin tam olarak ne anlama geldiğini anlamak yararlıdır. Site, alan adı soneki ile alanın ondan önceki bölümünün bileşimidir. Örneğin, www.web.dev alan adı web.dev sitesinin bir parçasıdır.

Anahtar terim: Kullanıcı www.web.dev sitesindeyse ve static.web.dev sitesinden resim isterse bu aynı site isteğidir.

Genel son ek listesi, hangi sayfaların aynı sitede olduğu Yalnızca .com gibi üst düzey alanlara değil, github.io gibi hizmetlere de bağlıdır. Bu sayede your-project.github.io ve my-project.github.io ayrı siteler olarak sayılır.

Anahtar terim: Kullanıcı your-project.github.io alanındaysa ve my-project.github.io ürününden resim isterse bu, siteler arası istektir.

Çerez kullanımını beyan etmek için SameSite özelliğini kullanın

Bir çerezdeki SameSite özelliği, bu davranışı kontrol etmek için üç farklı yol sunar. Özelliği belirtmemeyi seçebilir veya çerezi aynı site istekleriyle sınırlamak için Strict veya Lax kullanabilirsiniz.

SameSite değerini Strict olarak ayarlarsanız çereziniz yalnızca birinci taraf bağlamında gönderilebilir. Yani çerezin sitesi, tarayıcının adres çubuğunda gösterilen siteyle eşleşmelidir. Dolayısıyla, promo_shown çerezi aşağıdaki gibi ayarlanmışsa:

Set-Cookie: promo_shown=1; SameSite=Strict

Kullanıcı sitenizdeyken çerez, istekle birlikte beklendiği gibi gönderilir. Ancak kullanıcı başka bir siteden sitenize giden bir bağlantıyı tıklarsa çerez bu ilk istekte gönderilmez. Bu, şifre değiştirme veya satın alma gibi her zaman ilk gezinmenin ardından gelen özelliklerle ilgili çerezler için iyidir ancak promo_shown gibi bir çerez için çok kısıtlayıcıdır. Okuyucunuz, sitedeki bağlantıyı izlerse tercihlerinin uygulanabilmesi için çerezin gönderilmesini ister.

SameSite=Lax, tarayıcının çerezi bu üst düzey gezinmelerle göndermesine olanak tanır. Örneğin, başka bir site sitenizin içeriğine referans veriyorsa (bu durumda, kedi fotoğrafınızı kullanarak ve makalenizin bağlantısını sağlayarak) aşağıdaki gibi:

<p>Look at this amazing cat!</p>
<img src="https://blog.example/blog/img/amazing-cat.png" />
<p>Read the <a href="https://blog.example/blog/cat.html">article</a>.</p>

Aşağıdaki gibi Lax olarak ayarlanmış bir çerezle:

Set-Cookie: promo_shown=1; SameSite=Lax

Tarayıcı, diğer kullanıcının blogu için amazing-cat.png isteği gönderdiğinde siteniz çerezi göndermez. Ancak okuyucu, sitenizdeki cat.html bağlantısını takip ettiğinde bu istek çerezi içerir.

SameSite'ü bu şekilde kullanmanızı, web sitesi görüntülemesini etkileyen çerezleri Lax, kullanıcı işlemleriyle ilgili çerezleri ise Strict olarak ayarlamanızı öneririz.

Ayrıca çerezin tüm bağlamlarda gönderilmesini istediğinizi belirtmek için SameSite değerini None olarak da ayarlayabilirsiniz. Diğer sitelerin kullandığı bir hizmet (ör. widget'lar, yerleştirilmiş içerik, satış ortağı programları, reklamcılık veya birden fazla sitede oturum açma) sunuyorsanız amacınızın net olmasını sağlamak için None öğesini kullanın.

Bağlamı gereği Hiçbiri, Gevşek veya Katı olarak etiketlenmiş üç çerez
Çerezin bağlamını None, Lax veya Strict olarak açıkça işaretleyin.

SameSite olmadan varsayılan davranışta yapılan değişiklikler

Tarayıcı desteği

  • Chrome: 80.
  • Kenar: 86.
  • Firefox: Bir bayrağın arkasında.
  • Safari: Desteklenmez.

SameSite özelliği yaygın olarak desteklenir ancak yaygın olarak kullanılmaz. Geçmişte, SameSite olmadan ayarlanan çerezler varsayılan olarak tüm bağlamlarda gönderiliyordu. Bu da kullanıcıları CSRF ve istenmeyen bilgi sızıntısına karşı savunmasız bırakıyordu. Geliştiricileri niyetlerini belirtmeye ve kullanıcılara daha güvenli bir deneyim sunmaya teşvik etmek için Artımlı Olarak Daha İyi Çerezler başlıklı IETF önerisinde iki önemli değişiklik açıklanmaktadır:

  • SameSite özelliği olmayan çerezler SameSite=Lax olarak kabul edilir.
  • SameSite=None içeren çerezler Secure değerini de belirtmelidir. Yani güvenli bir bağlam gerektirirler.

Bu değişikliklerin her ikisi de SameSite özelliğinin önceki sürümünü doğru şekilde uygulayan tarayıcılarla ve önceki SameSite sürümlerini desteklemeyen tarayıcılarla geriye dönük olarak uyumludur. Bu uygulamaların amacı, çerez davranışını ve kullanım amacını açık hale getirerek geliştiricilerin tarayıcıların varsayılan davranışına olan bağımlılığını azaltmayı amaçlar. SameSite=None değerini tanımayan istemciler bu değeri yoksayar.

Varsayılan olarak SameSite=Lax

Bir çerezi SameSite özelliğini belirtmeden gönderirseniz tarayıcı bu çerezi SameSite=Lax olarak ayarlanmış gibi değerlendirir. Yine de tarayıcılar arasında kullanıcı deneyiminizi daha tutarlı hale getirmek için SameSite=Lax öğesini açıkça ayarlamanızı öneririz.

SameSite=None güvenli olmalıdır

SameSite=None kullanarak siteler arası çerez oluşturduğunuzda, tarayıcının bunları kabul etmesi için Secure olarak da ayarlamanız gerekir:

Set-Cookie: widget_session=abc123; SameSite=None; Secure

Bu davranışı Chrome 76'dan itibaren about://flags/#cookies-without-same-site-must-be-secure'ü etkinleştirerek, Firefox 69'dan itibaren ise about:config bölümünde network.cookie.sameSite.noneRequiresSecure'ü ayarlayarak test edebilirsiniz.

Ayrıca, mevcut çerezleri en kısa sürede Secure olarak güncellemenizi öneririz. Sitenizde üçüncü taraf içerik sağlayan hizmetlerden yararlanıyorsanız servis sağlayıcınızın çerezlerini güncellemesini sağlayın ve sitenizdeki snippet'leri veya bağımlılıkları güncelleyerek yeni davranışın kullanılmasını sağlayın.

SameSite=None ürününde yapılan bu değişiklikleri ve tarayıcı davranışındaki farklılıkları başarılı bir şekilde işlemek amacıyla çerezlerinizi güncelleme hakkında daha ayrıntılı bilgi için SameSite çerez tarifleri başlıklı bir sonraki makaleye bakın.

Lily Chen, Malte Ubl, Mike West, Rob Dodson, Tom Steiner ve Vivek Sekhar'dan gelen katkı ve geri bildirimler için teşekkür ederiz.

Unsplash'ta Pille-Riin Priske tarafından oluşturulan çerez hero resmi