İletişim

Çerez (Cookie) Nedir?

Kısa tanım

Çerez (cookie), bir web sunucusunun Set-Cookie yanıt başlığıyla tarayıcıya kaydettirdiği, ad ve değerden oluşan küçük veri parçasıdır. Tarayıcı çerezi saklar ve kapsamına uyan sonraki isteklerde Cookie başlığıyla sunucuya geri gönderir. Oturumu açık tutmak, sepeti ve dil tercihini hatırlamak, ölçümleme yapmak için kullanılır; Domain, Path, Expires, Max-Age ve Secure gibi öznitelikler çerezin hangi adreslere gideceğini ve ne kadar yaşayacağını belirler.

Diğer adları: Cookie, HTTP cookie, Web çerezi, Tarayıcı çerezi, Secure cookie

Sunucunun Set-Cookie ile oturum çerezi gönderdiği ve tarayıcının sonraki isteklerde bu çerezi geri yolladığı HTTP akışı

Bir çerez sunucunun yanıtındaki tek bir başlıkla doğar. Örneğin kullanıcı dil seçiciden Türkçe'yi seçtiğinde sunucu şunu döner:

HTTP/1.1 200 OK
Set-Cookie: dil=tr; Path=/; Max-Age=31536000; Secure; SameSite=Lax

Tarayıcı bu andan itibaren aynı siteye yaptığı her uygun istekte Cookie: dil=tr başlığını ekler. Dikkat edilmesi gereken nokta, geri gönderilen başlıkta yalnızca ad ve değerin bulunmasıdır: sunucu çerezin hangi özniteliklerle kaydedildiğini, ne zaman sona ereceğini sonradan okuyamaz. Mekanizmanın taşıyıcısı olan başlıklar HTTP başlığı maddesinde anlatılıyor.

Çerezler küçük olmak zorundadır. Tarayıcılar çerez başına genellikle 4 KB civarında ve alan adı başına sınırlı sayıda çereze izin verir. Daha önemlisi, kapsamına giren her istek, görseller ve CSS dosyaları dahil, bütün çerezleri yeniden taşır. Kontrolsüz büyüyen çerezler her istekte gereksiz bayt demektir.

Kapsam: Domain ve Path

  • Domain verilmezse çerez yalnızca onu ayarlayan ana makineye (host-only) gönderilir; www.example.com'un koyduğu çerez blog.example.com'a gitmez. Bu, en dar ve çoğu durumda en güvenli seçenektir.
  • Domain=example.com yazıldığında çerez ana alan adına ve bütün alt alan adlarına gider. Bir sunucu bu değeri yalnızca kendi alan adı veya üst alan adı için verebilir; başka bir siteye çerez yazamaz.
  • Path verilmezse, çerezi oluşturan isteğin yolundaki dizin varsayılan olur. Path=/panel çerezi yalnızca bu yol altındaki isteklere sınırlar. RFC 6265, Path'in bir güvenlik sınırı olarak kullanılamayacağını açıkça belirtir; aynı host'taki başka bir sayfa çereze yine ulaşabilir.

Ömür: Expires ve Max-Age

Hiçbir süre verilmeyen çerez “oturum çerezi” sayılır ve tarayıcı oturumu sona erdiğinde silinir; sekmeleri geri yükleyen tarayıcılarda bu an tahmin edilenden çok daha geç gelebilir. Expires kesin bir tarih, Max-Age saniye cinsinden bir süre bildirir. Tarih kullanıcının saatine göre yorumlandığı için Max-Age daha az hataya açıktır ve ikisi birlikte verildiğinde öncelik onundur. Bir çerezi silmenin yolu da budur: aynı ad, Domain ve Path ile Max-Age=0 göndermek.

Secure özniteliği ve önekler

Secure işaretli bir çerez yalnızca HTTPS üzerinden gönderilir. Böylece aynı ağdaki biri şifresiz bir HTTP isteğini dinleyerek çerezi okuyamaz. http: ile açılan sayfalar Secure çerez ayarlayamaz; tarayıcıların çoğu yalnızca yerel geliştirme için localhost'a istisna tanır (Safari bu istisnayı desteklemez). Secure'un yapmadığı şeyleri de bilmek gerekir: çerezin değerini şifrelemez ve sayfadaki JavaScript'in çerezi okumasını engellemez. Script erişimini kesmek HttpOnly'nin, siteler arası isteklerde gönderimi sınırlamak SameSite'ın işidir.

Ad önekleri tarayıcıya ek kurallar dayatır. __Secure- ile başlayan bir çerez yalnızca Secure olarak ve HTTPS sayfasından ayarlanabilir. __Host- öneki buna ek olarak Domain özniteliğini yasaklar ve Path=/ ister; böylece bir alt alan adının bu çerezin üzerine yazması engellenir. Oturum çerezleri için __Host- önekli bir ad güçlü bir varsayılandır.

Kimin çerezi, hangi izinle?

Ziyaret edilen sitenin kendi koyduğu çerezler birinci taraf çerez, sayfaya gömülü başka bir alan adından gelenler üçüncü taraf çerez olarak adlandırılır. Teknik olarak aynı mekanizmadır; farkı hukuki ve gizlilik açısındaki sonuçlarıdır. Hizmetin çalışması için zorunlu çerezlerle analitik ve reklam çerezleri farklı değerlendirilir; KVKK ve GDPR çerçevesindeki bilgilendirme ve izin konuları çerez onayı maddesinde ele alınıyor.

Son olarak, çereze ne konacağı da bir tasarım kararıdır. Kullanıcının yetkisi, sepet tutarı gibi değiştirilmesi sorun yaratacak bilgiler düz metin olarak çerezde tutulmamalı; çerezde yalnızca bir kimlik bulunmalı, asıl veri sunucuda kalmalıdır.

İlgili terimler

← Sözlüğe dön