SameSite çerezleri hakkında açıklama

Tarayıcı Desteği

  • 51
  • 16
  • 60
  • 13

Kaynak

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

SameSite özelliği kullanıma sunuldu (RFC6265bis'te tanımlanır), çerezinizin birinci taraf bağlamı veya aynı site bağlamıyla mı sınırlı olduğunu bildirmenizi sağlar. Buradaki "site" ifadesinin tam olarak ne anlama geldiğini anlamanız yararlı olur. Site, alan adı son eki ile alanın kendisinden hemen önceki bölümü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 üzerindeyse ve static.web.dev ürününden resim istiyorsa bu, aynı site isteğidir.

Genel son ek listesi hangi sayfaların aynı sitede olarak sayıldığını tanımlar. .com gibi üst düzey alan adlarını kullanmakla kalmaz, github.io gibi hizmetleri de içerebilir. Bu, your-project.github.io ve my-project.github.io sitesinin ayrı siteler olarak sayılmasını sağlar.

Anahtar terim: Kullanıcı your-project.github.io üzerindeyse ve my-project.github.io adresinden resim istiyorsa bu, siteler arası bir istektir.

Çerez kullanımını bildirmek 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 ya da Lax kullanabilirsiniz.

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

Set-Cookie: promo_shown=1; SameSite=Strict

Kullanıcı sitenizdeyken, çerez beklendiği gibi istekle birlikte gönderilir. Ancak, kullanıcı başka bir siteden sitenize gelen bağlantıyı izlerse çerez bu ilk istekte gönderilmez. Bu, şifre değiştirme veya satın alma işlemi gibi ilk gezinmenin her zaman arkasında olan özelliklerle ilgili çerezler için uygundur, ancak promo_shown gibi bir çerez için fazla kısıtlayıcıdır. Okuyucunuz siteye giden bağlantıyı izlerse tercihinin uygulanabilmesi için çerezin gönderilmesini ister.

SameSite=Lax, tarayıcının çerezi bu üst düzey gezinme işlemleriyle göndermesine izin verir. Örneğin, başka bir site sitenizin içeriğine referans veriyorsa, bu durumda kedi fotoğrafınızı kullanıp makalenize aşağıdaki gibi bir bağlantı sağlayarak:

<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>

Lax değerine ayarlanmış çerez aşağıdaki gibi olduğunda:

Set-Cookie: promo_shown=1; SameSite=Lax

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

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

Çerezin tüm bağlamlarda gönderilmesini istediğinizi belirtmek için SameSite değerini None olarak ayarlayabilirsiniz. Widget'lar, yerleştirilmiş içerik, satış ortağı programları, reklamcılık veya birden fazla sitede oturum açma gibi diğer sitelerin kullandığı bir hizmet sağlıyorsanız amacınızın net olduğundan emin olmak için None kullanın.

Bağlamlarına bağlı olarak Yok, Lax ve Katı etiketli üç çerez
Çerezin bağlamını açıkça None, Lax veya Strict olarak işaretleyin.

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

Tarayıcı Desteği

  • 80
  • 86
  • x

SameSite özelliği yaygın olarak desteklense de yaygın olarak kullanılmamıştır. Geçmişte, SameSite içermeyen çerezlerin ayarlanması bunları varsayılan olarak tüm bağlamlarda gönderiyordu. Bu da kullanıcıları CSRF ve istenmeyen bilgi sızıntılarına karşı savunmasız bırakıyordu. Geliştiricileri niyetlerini belirtmeye teşvik etmek ve kullanıcılara daha güvenli bir deneyim sunmak için IETF teklifi olan Incrementally Better Cookies, iki önemli değişiklik ortaya koyar:

  • SameSite özelliği olmayan çerezler SameSite=Lax olarak değerlendirilir.
  • SameSite=None içeren çerezlerde Secure değeri belirtilmelidir. Diğer bir deyişle, bu çerezler güvenli bir bağlam gerektirir.

Bu değişikliklerin her ikisi de SameSite özelliğinin önceki sürümünü doğru şekilde uygulayan tarayıcılar ve önceki SameSite sürümlerini desteklemeyen tarayıcılarla geriye dönük uyumludur. Bu geliştirmeler, ç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ı azaltmaya yöneliktir. SameSite=None'yi tanımayan tüm istemciler bunu görmezden gelmelidir.

Varsayılan olarak SameSite=Lax

Bir çerezi, SameSite özelliğini belirtmeden gönderirseniz tarayıcı, bu çerezi SameSite=Lax olarak ayarlanmış gibi işler. Yine de tarayıcılar genelinde kullanıcı deneyiminizi daha tutarlı hale getirmek için SameSite=Lax değerini açık bir şekilde ayarlamanızı öneririz.

SameSite=None güvenli olmalıdır

SameSite=None kullanarak siteler arası çerezler oluşturduğunuzda, tarayıcının bu çerezleri kabul etmesi için bunları da Secure olarak 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 özelliğini etkinleştirerek, Firefox 69'dan itibaren ise about:config'da network.cookie.sameSite.noneRequiresSecure ayarını yaparak test edebilirsiniz.

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

SameSite=None ile ilgili bu değişiklikleri ve tarayıcı davranışındaki farklılıkları başarılı bir şekilde ele almak üzere çerezlerinizi güncelleme hakkında ayrıntılı bilgi için SameSite çerez tarifleri başlıklı şu makaleyi inceleyin:

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.

Pille-Riin Priske'in Unsplash tarafından çekilmiş kurabiye hero resmi