Bir web sunucusu, kaynak isteğine yanıt verirken yanıtıyla birlikte Set-Cookie
üstbilgisini de ekleyebilir. Bu başlık, tarayıcınıza bir çerez depolamasını söyler. Örneğin: Set-Cookie:cat=tabby
.
Çerezler nedir? başlıklı makalede çerezlerin nasıl çalıştığı açıklanmaktadır.
Çerez adı ve değeri sağlamanın yanı sıra Set-Cookie
, çerezlerin ayarlanıp ayarlanmayacağını ve ne zaman sona ereceğini kontrol etmek için özellikler içerebilir. Çerez özellikleri noktalı virgülle ayrılır. Örneğin:
Set-Cookie:cat=tabby; Secure; HTTPOnly; Expires=Tue, 31 Dec 2999 23:59:59 GMT;
Bu belgede en önemli çerez özellikleri açıklanmaktadır:
HTTP çerezlerini kullanma başlıklı makalede çerez özellikleri daha teknik bir şekilde açıklanmaktadır.
Güvenli
Bir Set-Cookie
üst bilgisi Secure
içeriyorsa çerez yalnızca HTTPS protokolünü kullanan şifrelenmiş isteklerle birlikte gönderilir. Çerez, HTTP isteklerine dahil edilmez. Bu, saldırganın bilgileri iletmek ve muhtemelen değiştirmek için tarayıcı ile sunucu arasındaki iletişime gizlice müdahale ettiği aracı saldırılarını durdurmaya yardımcı olabilir.
HTTPOnly
Bir Set-Cookie
başlığı HTTPOnly
içeriyorsa JavaScript, örneğin document.cookie
kullanarak çerezlere erişemez. Bu, çerezleri hedefleyen belirli saldırı türlerine karşı koruma sağlar.
SameSite
Ziyaret ettiğiniz siteden farklı bir siteden kaynak isteğinde bulunmak siteler arası bir istektir. Siteler arası bir isteğe yanıt olarak ayarlanan çerez üçüncü taraf çerezidir.
SameSite
özelliği, bir isteğe üçüncü taraf çerezinin dahil edilip edilmeyeceğini kontrol eder. Üç olası değeri vardır: Strict
, Lax
veya None
.
Daha fazla bilgi: Üçüncü taraf çerezleri nedir?
Katı
Çerez yalnızca, çerezin kaynak sitesindeki bir sayfadan gelen isteklere yanıt olarak gönderilir. Örneğin, bir kullanıcının cats.example
adresini ziyaret ettiğini ve SameSite=Strict
özelliğiyle ayarlanmış bir çerezinin olduğunu düşünelim. Daha sonra kullanıcı farklı bir sitede bulunur ve cats.example
üzerindeki bir sayfanın bağlantısını tıklar. Ayarlanan çerez bu isteğe dahil edilmez.
Lax
Bu, Strict
ile aynı şekilde çalışır. Ancak kullanıcı, çerezin kaynak sitesine giden bir bağlantıyı tıkladığında tarayıcı da çerezi içerir. (Önceki Strict
örneğinde, kullanıcı cats.example
bağlantısını tıkladığında çerez eklenir.) Set-Cookie
üstbilgisinde SameSite
özelliği yoksa Lax
varsayılandır.
Yok
Kısıtlama yok: Çerez, siteler arası olup olmadığına bakılmaksızın isteğe dahil edilir. SameSite=None
ile tanımlanan çerezde Secure
özelliği de bulunmalıdır.
Bölünmüş
Bu özellik, üst düzey site başına ayrı bir "çerez kavanozu" ile çerezleri bölümlendirilmiş depolamaya dahil etmenize olanak tanır. Çerez, hem üst düzey site hem de onu ayarlayan alan tarafından çift anahtarlı olarak oluşturulur.
Örneğin, A web sitesi ve B web sitesinin her ikisinde de C web sitesinden bir iFrame olduğunu varsayalım. A web sitesindeki iFrame tarafından ayarlanan bölümlendirilmiş bir çereze B web sitesindeki iFrame tarafından erişilemez: AC çerezi, BC çerezinden ayrıdır.
Partitioned
özelliği olan çerezler, CHIPS (Cookies Having Independent Partitioned State) olarak bilinir.
Bölümlendirilmiş çerezler Secure
özelliğine sahip olmalıdır.
Daha fazla bilgi: Bağımsız Bölümlendirme Durumuna Sahip Çerezler.
Expires ve Max-Age
Çerezlerin silinmesi ve artık gönderilmemesi gereken Expires
tarihi ve saati veya Max-Age
süresini (saniye cinsinden) belirtebilirsiniz. Örneğin:
Set-Cookie:cat=tabby; Expires=Tue, 31 Dec 2999 23:59:59 GMT;
Set-Cookie:cat=tabby; Max-Age=86400
Max-Age
veya Expires
özelliği belirtmezseniz geçerli oturum sona erdiğinde çerez silinir. Bu tür çerezlere bazen oturum çerezi adı verilir.
Alan
Bir Set-Cookie
üstbilgisinde Domain
özelliği varsa çerez, belirtilen alan adına ve alt alan adlarına yapılan isteklerle birlikte gönderilir.
Bir Set-Cookie
başlığında Domain
özelliği yoksa çerez, alt alan adlarına yapılan isteklere dahil edilmez.
Başka bir deyişle, Domain
özelliğinin eklenmesi alan kısıtlamalarını azaltır.
Örneğin, web sitesinden gelen bir yanıtla cats.example
:
Set-Cookie:cat=tabby
Çerez yalnızcacats.example
adresine yapılan isteklerle birlikte gönderilir.Set-Cookie:cat=tabby; Domain=cats.example
Çerez,cats.example
adresine yapılan isteklerin yanı sırafluffy.cats.example
veyauser.assets.cats.example
gibi alt alanlardaki kaynak isteklerine de dahil edilir.
Path
Bir Path
özelliği bir Set-Cookie
yanıt başlığına dahil edilirse ayarlanan çerez yalnızca Path
değeriyle eşleşen URL'lere (çerezi ayarlayan sitedeki) yapılan isteklere dahil edilir.
Örneğin:
Set-Cookie:cat=tabby; Path=/articles
Çerez,/articles
ile başlayan herhangi bir URL yolu isteğine dahil edilir:
✅https://cats.example/articles/tabby/index.html
✅https://cats.example/articles/breeds/tabby/index.html
❎https://cats.example/images/tabby.jpg
❎https://cats.example/en/articles/tabby/index.html
Set-Cookie:cat=tabby; Path=/
Sitedeki herhangi bir URL'ye yapılan tüm istekler çerezi içerir.
Bir Set-Cookie
yanıt başlığında Path
değeri yoksa çerez yalnızca aynı dizine yapılan isteklere dahil edilir. Örneğin, cats.example/images/tabby.jpg.
isteğine yanıt olarak bir cat=tabby
çerezinin ayarlandığını düşünün. Path
ayarlanmazsa çerez yalnızca cats.example/images
dizinindeki dosya isteklerine dahil edilir.
Demolar
- 1pc.glitch.me: birinci taraf çerezi demosu
- 3pc.glitch.me: üçüncü taraf çerezi demosu
Araçlar
- Chrome Geliştirici Araçları'nda çerezleri görüntüleme, ekleme, düzenleme ve silme
- Özel Korumalı Alan Analiz Aracı
Daha fazla bilgi
- Birinci taraf çerez tarifleri
- Çerezler nedir?
- Üçüncü taraf çerezleri nedir?
- HTTP isteği ve yanıtı
- Çerez araçları
- Çerez demoları
- HTTP çerezlerini kullanma
- SameSite çerezleri hakkında açıklama
- OWASP: Çerezler