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 faydalı olacaktır. Site, alan adı son ekinin ve alan adının hemen önceki kısmının birleş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 sitesindeyse ve my-project.github.io sitesinden resim isterse bu siteler arası bir istektir.

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

Çerezlerdeki SameSite özelliği, bu davranışı kontrol etmenin üç farklı yolunu 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 bağlantıyı takip ederek siteye girdiğinde, tercihinin 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ı izlediğ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.

Ç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ğlamlarına bağlı olarak Yok, 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.
  • Edge: 86.
  • Firefox: İşaretli.
  • 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. Bu, güvenli bir bağlam gerektirdikleri anlamına gelir.

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. Çerez davranışını ve amaçlanan kullanımını açıkça belirterek 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 kullanıcı deneyiminizi tarayıcılar arasında daha tutarlı hale getirmek için SameSite=Lax değerini açıkça ayarlamanız önerilir.

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'ta 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.

Çerezlerinizi SameSite=None ile ilgili bu değişiklikleri ve tarayıcı davranışındaki farklılıkları başarılı bir şekilde ele alacak şekilde güncelleme hakkında daha fazla bilgi için SameSite çerez tarifleri başlıklı takip makalesine bakın.

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

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