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.
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 çerezlerSameSite=Lax
olarak değerlendirilir.SameSite=None
içeren çerezlerdeSecure
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
kurabiye tarifleri
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