Bir web sunucusu, kaynak isteğiyle yanıt verirken yanıtına bir Set-Cookie üstbilgisi ekleyebilir. Bu başlık, tarayıcınızda bir çerez depolanmasını sağlar. Örneğin: Set-Cookie:cat=tabby.
Çerezler nedir? başlıklı makalede çerezlerin işleyiş şekli açıklanmaktadır.
Set-Cookie, çerez adı ve değeri sağlamanın yanı sıra çerezlerin ayarlanıp ayarlanmadığı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 makalede, 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 başlığı Secure içeriyorsa çerez yalnızca HTTPS protokolünü kullanan şifrelenmiş isteklerle birlikte eklenir. Çerez, HTTP isteklerine dahil edilmez. Bu sayede, saldırganın bilgi aktarmak ve muhtemelen değiştirmek için tarayıcı ile sunucu arasındaki iletişime gizlice müdahale ettiği aracı saldırıları önlenebilir.
👉 Tüm çerezler için varsayılan olarak Secure eklemeniz gerekir.
HTTPOnly
Bir Set-Cookie üstbilgisinde HTTPOnly varsa çereze document.cookie kullanılarak erişilemez. Bu, çerezleri hedefleyen belirli saldırı türlerine karşı koruma sağlar.
👉 Tüm çerezler için varsayılan olarak HTTPOnly eklemeniz gerekir. Yalnızca JavaScript kullanarak çerez değerlerini ayarlayabilmeniz ve alabilmeniz gerekiyorsa atlayın.
SameSite
Ziyaret ettiğiniz siteden farklı bir sitedeki bir kaynağa yönelik istek, siteler arası istektir. Siteler arası bir isteğe yanıt olarak ayarlanan çerezler üçüncü taraf çerezleri olarak bilinir.
SameSite özelliği, bir isteğe üçüncü taraf çerezinin eklenip eklenmeyeceğini kontrol eder. Üç olası değeri vardır: Strict, Lax veya None.
👉 Hiçbir değer ayarlanmazsa varsayılan değer SameSite=Lax olur. SameSite=None, siteler arası çerezlere izin verir ancak üçüncü taraf çerez kısıtlamalarının geçerli olduğu yerlerde çerezlerin engelleneceği anlamına gelir.
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ğine sahip bir çerez ayarlandığını varsayalım. Daha sonra kullanıcı farklı bir sitedeyken cats.example'teki bir sayfaya giden bir bağlantıyı tıklar. Ayarlanan çerez bu isteğe dahil edilmez.
Lax
Bu, Strict ile aynı şekilde çalışır. Bunun tek farkı, kullanıcı çerezin kaynak sitesinin bağlantısını izlediğinde tarayıcının çerezi de dahil etmesidir. (Önceki Strict örneğinde, kullanıcı cats.example bağlantısını izlediğinde çerez eklenir.) Set-Cookie başlığına SameSite özelliği eklenmemişse varsayılan olarak Lax kullanılır.
Yok
Kısıtlama yok: Çerez, siteler arası olup olmadığına bakılmaksızın bir isteğe eklenir. SameSite=None ile birlikte çerezde Secure özelliği de olmalıdır.
Bölünmüş
Bu özellik, üst düzey site başına ayrı bir "çerez kabı" ile bir çerezi bölünmüş depolama için etkinleştirmenize olanak tanır. Çerez, üst düzey sitenin yanı sıra onu ayarlayan alan tarafından çift anahtarlıdır.
Örneğin, A web sitesinin ve B web sitesinin her ikisinin de C web sitesinden bir iframe içerdiğini varsayalım. A web sitesindeki iFrame tarafından ayarlanan bölümlere ayrılmış bir çereze B web sitesindeki iFrame tarafından erişilemez: AC çerezi, BC çerezi'nden ayrıdır.
👉 Üçüncü taraf çerezi oluşturuyorsanız Partitioned özelliğini varsayılan olarak eklemeniz gerekir. Bunun birden fazla yerleşimde paylaşılması gerektiğini açıkça bilmiyorsanız bu özelliği eklemeniz gerekmez.
Partitioned özelliğine sahip çerezler, Bağımsız Bölümlendirme Durumuna Sahip Çerezler (CHIPS) olarak bilinir.
Bölümlendirilmiş çerezlerde Secure özelliği olmalıdır.
Daha fazla bilgi: Bağımsız Bölümlendirme Durumuna Sahip Çerezler.
Expires ve Max-Age
Bir çerezin silinmesi ve artık gönderilmemesi için Expires tarih ve saati veya saniye cinsinden bir Max-Age 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ğini belirtmezseniz çerez, geçerli oturum sona erdiğinde silinir. Bu tür çerezler bazen oturum çerezi olarak bilinir.
👉 Geçerli oturumdan daha uzun süreli bir çereğe ihtiyacınız yoksa Max-Age ve Expires özelliklerini çıkarın. Tarayıcılar çerezlerin süresini sonlandırır. Bu nedenle, yıllar sonra sona erecek bir süre ayarlamanıza gerek yoktur. Bunun yerine, kullanıcı sitenizi yeniden ziyaret ettiğinde çerezleri yenilemeyi düşünebilirsiniz.
Alan
Bir Set-Cookie başlığında Domain özelliği varsa çerez, belirtilen alana ve alt alanlarından herhangi birine yapılan isteklerle birlikte eklenir.
Bir Set-Cookie başlığında Domain özelliği yoksa çerez, alt alan adlarına yapılan isteklere dahil edilmez.
Diğer bir deyişle, Domain özelliğini eklemek alan kısıtlamalarını azaltmaktadır.
Örneğin, cats.example web sitesinden alınan bir yanıtla:
Set-Cookie:cat=tabby
Çerez yalnızcacats.exampleadresine yapılan istekler için eklenir.Set-Cookie:cat=tabby; Domain=cats.example
Çerez,cats.example'ye yapılan istekler vefluffy.cats.exampleveyauser.assets.cats.examplegibi alt alanlardaki kaynaklarla ilgili tüm istekler için eklenir.
👉 Alt alan adlarına yapılan isteklerle birlikte bir çerezin eklenmesi gerekiyorsa Domain özelliği eklemeyin.
Path
Bir Set-Cookie yanıt başlığına Path özelliği eklenirse ayarlanan çerez yalnızca Path değeriyle eşleşen URL'lere (çerez ayarlanan sitede) yapılan isteklere dahil edilir.
Örneğin:
Set-Cookie:cat=tabby; Path=/articles
Çerez,/articlesile başlayan herhangi bir URL yoluna yapılan istek için eklenir:
✅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ı dizinle ilgili isteklerle birlikte eklenir. Ö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 eklenir.
👉 Sitenizdeki herhangi bir yola yapılan tüm isteklerin çerezi içermesi gerekiyorsa Path=/ öğesini çerezle birlikte ekleyin. Güvenlik koruması için Path'e güvenmeyin.
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