Her çerez bir anahtar/değer çiftinin yanı sıra çerezin ne zaman ve nerede kullanılacağını kontrol edebilir.
SameSite
özelliğinin kullanıma sunulması (
RFC6265bis) bakın
çerezin birinci tarafla mı yoksa birinci tarafla mı sınırlı olduğunu
emin olmanız gerekir. "Site"nin tam olarak ne anlama geldiğini anlamına geliyor.
Site, alan adı sonekinin ve alan adının yalnızca
girin. Örneğin, www.web.dev
alanı web.dev
sitesinin bir parçasıdır.
Anahtar terim: Kullanıcı www.web.dev
üzerindeyse ve şuradan resim istiyorsa:
static.web.dev
, bu aynı siteye ait bir istektir.
Genel sonek listesi, hangi sayfaların
aynı sitede bulunmalarını öneririz. Bu yalnızca .com
gibi üst düzey alanlara bağlı değildir,
ancak github.io
gibi hizmetleri de içerebilir. Bu durumda,
your-project.github.io
ve my-project.github.io
ayrı siteler olarak sayılır.
Anahtar terim: Kullanıcı your-project.github.io
üzerindeyse ve şuradan resim istiyorsa:
my-project.github.io
, siteler arası istektir.
Çerez kullanımını bildirmek için SameSite
özelliğini kullanın.
Bir çerezdeki SameSite
özelliği, kontrol etmek için üç farklı yol sağlar
davranıştan bahsedeceğiz. Özelliği belirtmemeyi seçebilir veya
Çerezi aynı site istekleriyle sınırlamak için Strict
veya Lax
.
SameSite
değerini Strict
olarak ayarlarsanız çereziniz yalnızca bir
birinci taraf bağlamı; yani çereze ait site, gösterilen siteyle eşleşiyorsa
yazın. Dolayısıyla, promo_shown
çerezi aşağıdaki gibi ayarlanırsa:
Set-Cookie: promo_shown=1; SameSite=Strict
Kullanıcı sitenizdeyken çerez, istekle birlikte beklendiği gibi gönderilir.
Ancak kullanıcı, başka bir adresten sitenize gelen bir bağlantıyı izlerse, çerez
bu ilk istekte gönderilmez.
Bu özellik, her zaman başta
(şifre değiştirme veya satın alma işlemi yapma gibi) değil,
promo_shown
gibi çerezler için kısıtlayıcı. Okuyucunuz bağlantıyı izlerse
çerezin gönderilmesini ve bunun için tercihlerinin uygulanabilmesini ister.
SameSite=Lax
, tarayıcının çerezi bu üst düzey ayarlarla göndermesine izin verir
daha fazla bilgi edinebilirsiniz. Örneğin, başka bir site, sitenizin içeriğine referans veriyorsa
Bunun için kedi fotoğrafınızı kullanıp makalenizin bağlantısını
sağlayarak
şöyle olur:
<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ış bir çerezle:
Set-Cookie: promo_shown=1; SameSite=Lax
Tarayıcı, diğer kişinin blogu için amazing-cat.png
isteğinde bulunduğunda
çerez göndermez. Ancak okuyucu,
Bu istek çerezi içerir.cat.html
SameSite
web sitesini etkileyen çerezleri bu şekilde kullanmanızı öneririz.
Lax
için gösterilir ve kullanıcı işlemleriyle ilgili çerezler Strict
için gösterilir.
Çerezin geçerli olmasını istediğinizi belirtmek için SameSite
değerini de None
olarak ayarlayabilirsiniz.
her bağlamda gönderilir. Diğer sitelerin kullandığı bir hizmet sağlıyorsanız (örneğin,
widget'lar, yerleştirilmiş içerikler, satış ortağı programları, reklamlar veya
birden fazla sitede kullanıyorsanız amacınızın net olduğundan emin olmak için None
kullanın.
![Bağlamlarına göre None, Lax veya Strict (Katı) olarak etiketlenmiş üç çerez](https://web.dev/static/articles/samesite-cookies-explained/image/three-cookies-labelled-no-495f9afccf1cd.png?authuser=19&hl=tr)
None
, Lax
veya Strict
olarak işaretleyin.
SameSite olmadan varsayılan davranışta yapılan değişiklikler
Tarayıcı Desteği
-
.
-
.
-
-
.
SameSite
özelliği geniş çapta desteklense de yaygın olarak kullanıma sunulmamıştır.
Eskiden çerezlerin SameSite
olmadan ayarlanması, çerezlerin varsayılan olarak
tüm bağlamları kullanarak kullanıcıları CSRF'ye karşı savunmasız bırakır ve istemeden
olabilir. Geliştiricileri niyetlerini belirtmeye teşvik etmek
IETF teklifi, kullanıcılara daha güvenli bir deneyim
Artımlı Olarak Daha İyi Çerezler
iki önemli değişiklik ortaya koyuyor:
SameSite
özelliği olmayan çerezlerSameSite=Lax
olarak kabul edilir.SameSite=None
öğesine sahip çerezler deSecure
öğesini belirtmelidir. Bu, anlatabilmişimdir.
Bu değişikliklerin ikisi de doğru şekilde
SameSite
özelliğinin önceki sürümünü uyguladı.
önceki SameSite
sürümlerini desteklemeyen tarayıcılar. Bu toplantıların amacı
geliştiricilerin sayısını azaltmak için güvenilir olmadığı için yapılandırarak (ör. çerezi yapılandırarak)
açıkça belirtilmiş olmalıdır. Tanımayan ve
SameSite=None
bunu yoksaymalıdır.
Varsayılan olarak SameSite=Lax
Bir çerezi, SameSite
özelliğini belirtmeden gönderirseniz tarayıcı
çerezi SameSite=Lax
değerine ayarlanmış gibi işler. Önerilerimiz:
Kullanıcı deneyiminizi daha tutarlı hale getirmek için açıkça SameSite=Lax
ayarlayarak
yardımcı olur.
SameSite=None
güvenli olmalıdır
SameSite=None
kullanarak siteler arası çerezler oluşturduğunuzda bunları da ayarlamanız gerekir.
Tarayıcının bunları kabul etmesi için Secure
adresine:
Set-Cookie: widget_session=abc123; SameSite=None; Secure
Chrome 76'dan itibaren bu davranışı test etmek için
about://flags/#cookies-without-same-site-must-be-secure
ve Firefox 69'dan
şurada network.cookie.sameSite.noneRequiresSecure
ayarlayarak
about:config
.
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
hizmet sağlayıcınız çerezlerini günceller ve snippet'ler veya
kullanımından emin olmanız gerekir.
SameSite
kurabiye tarifleri
Bu uygulamaların başarılı bir şekilde işlenmesi için çerezlerinizi güncelleme hakkında
SameSite=None
değişiklikleri ve tarayıcı davranışındaki farklılıklar için
SameSite kurabiye tarifleri adlı makalenin devamını okuyun.
Lily Chen, Malte Ubl ve Mike'tan gelen katkılar ve geri bildirimler için teşekkür ederiz. West, Rob Dodson, Tom Steiner ve Vivek Sekhar.
Çerez hero resmi: Pille-Riin Priske açık Başlangıç