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.exampleadresine yapılan isteklerle birlikte gönderilir.Set-Cookie:cat=tabby; Domain=cats.example
Çerez,cats.exampleadresine yapılan isteklerin yanı sırafluffy.cats.exampleveyauser.assets.cats.examplegibi 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,/articlesile 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.htmlSet-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