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'de 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 girerse 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.
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.
SameSite olmadan varsayılan davranışta yapılan değişiklikler
Tarayıcı desteği
SameSite
özelliği yaygın olarak desteklenir ancak yaygın olarak kullanılmamaktadır.
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 çerezlerSameSite=Lax
olarak kabul edilir.SameSite=None
içeren çerezlerSecure
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. Çerez davranışını ve amaçlanan kullanımı açıkça belirterek geliştiricilerin tarayıcıların varsayılan davranışına olan güvenini 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
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
kurabiye tarifleri
Ç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