Çerezleri anlama

Çerez, web sitesinin özelliklerini yürütmesi için ihtiyaç duyduğu durumu ve diğer bilgileri korumak amacıyla tarayıcıda depolanan bir veri parçasıdır.

Çerez, web sitelerinin kullanıcılarının makinesinde depoladığı küçük bir dosyadır. Depoladığı bilgiler tarayıcı ile web sitesi arasında gidip gelir.

Her çerez, çerezin ne zaman ve nerede kullanılacağını kontrol eden bir dizi özellikle birlikte bir anahtar/değer çiftidir. Bu özellikler, geçerlilik bitiş tarihleri gibi ayarları belirlemek veya çerezin yalnızca HTTPS üzerinden gönderilmesi gerektiğini belirtmek için kullanılır. HTTP üst bilgisinde veya JavaScript arayüzü üzerinden çerez ayarlayabilirsiniz.

Çerezler, web sitelerine kalıcı durum eklemek için kullanılabilen yöntemlerden biridir. Bu özellikler yıllar içinde gelişti ve değişti ancak platformda bazı eski sorunlara yol açtı. Bu sorunu çözmek için tarayıcılar (Chrome, Firefox ve Edge dahil), gizliliği daha fazla korumaya yönelik varsayılan ayarlar uygulamak için davranışlarını değiştiriyor.

Çerezlerin işleyiş şekli

Kullanıcılarınıza "Yenilikler" tanıtımı göstermek istediğiniz bir blogunuz olduğunu düşünelim. Kullanıcılar promosyonu kapatabilir ve bir süre sonra tekrar görmez. Bu tercihi bir çerezde saklayabilir, bir ay içinde (2.600.000 saniye) geçerliliğini yitireceği şekilde ayarlayabilir ve yalnızca HTTPS üzerinden gönderebilirsiniz. Bu başlık şöyle görünür:

Set-Cookie: promo_shown=1; Max-Age=2600000; Secure
Bir yanıtta sunucudan tarayıcıya gönderilen üç çerez
Sunucular, Set-Cookie başlığını kullanarak çerezleri ayarlar.

Okuyucunuz bu koşulları karşılayan bir sayfayı görüntülediğinde (güvenli bir bağlantı kullanıyorsa ve çerezin yaşı bir aydan kısaysa) tarayıcısı isteğinde şu üstbilgiyi gönderir:

Cookie: promo_shown=1
Bir istekte bir tarayıcıdan sunucuya gönderilen üç çerez
Tarayıcı, çerezleri Cookie başlığında geri gönderir.

Ayrıca document.cookie kullanarak JavaScript'te ilgili sitenin kullanabileceği çerezleri ekleyip okuyabilirsiniz. document.cookie için bir atama yapmak, bu anahtarı içeren bir çerez oluşturur veya geçersiz kılar. Örneğin, tarayıcınızın JavaScript konsolunda aşağıdakileri deneyebilirsiniz:

→ document.cookie = "promo_shown=1; Max-Age=2600000; Secure"
← "promo_shown=1; Max-Age=2600000; Secure"

document.cookie okuma işlemi, geçerli bağlamda erişilebilen tüm çerezleri noktalı virgülle ayrılmış şekilde gösterir:

→ document.cookie;
← "promo_shown=1; color_theme=peachpuff; sidebar_loc=left"
Tarayıcıda çerezlere erişen JavaScript
JavaScript, document.cookie kullanarak çerezlere erişebilir.

Bunu popüler sitelerden birinde denerseniz çoğunun üçten çok daha fazla çerez ayarladığını fark edersiniz. Çoğu durumda bu çerezler, ilgili alana yapılan her istekte gönderilir. Bu durum, çeşitli sonuçlara yol açar. Kullanıcılarınız için yükleme bant genişliği, indirme işleminden genellikle daha kısıtlıdır. Bu nedenle, tüm giden isteklerin ek yükü, ilk bayta uygulanan süreyi geciktirir. Belirlediğiniz çerezlerin sayısı ve boyutu konusunda dikkatli olun. Çerezlerin gerekenden uzun süre saklanmamasını sağlamak için Max-Age özelliğini kullanın.

Birinci taraf ve üçüncü taraf çerezleri nedir?

Daha önce incelediğiniz sitelerin aynısına geri döndüğünüzde, ziyaret ettiğiniz sitenin yanı sıra çeşitli alanlar için çerezler olduğunu fark etmiş olabilirsiniz. Mevcut sitenin alan adıyla eşleşen, yani tarayıcının adres çubuğunda görüntülenen çerezler, birinci taraf çerezleri olarak adlandırılır. Benzer şekilde, mevcut site dışındaki alanlardan gelen çerezlere üçüncü taraf çerezleri denir. Bu mutlak bir etiket değil, kullanıcının bağlamına göre değişir. Aynı çerez, kullanıcının o anda hangi sitede olduğuna bağlı olarak birinci taraf veya üçüncü taraf olabilir.

Aynı sayfadaki farklı isteklerden bir tarayıcıya üç çerez gönderiliyor
Çerezler, tek bir sayfadaki çeşitli farklı alanlardan gelebilir.

Yukarıdaki örnekten devam edelim. Blog yayınlarınızdan birinin içinde muhteşem bir kedi olduğunu ve bu kedinin /blog/img/amazing-cat.png adresinde barındırıldığını varsayalım. Bu inanılmaz bir resim olduğu için, başka bir kişi bunu doğrudan kendi sitesinde kullanıyor. Bir ziyaretçi blogunuzu ziyaret ettiyse ve promo_shown çerezi varsa diğer kullanıcının sitesinde amazing-cat.png'ı görüntülediğinde, resim isteğiyle birlikte bu çerez gönderilir. promo_shown, diğer kullanıcının sitesinde hiçbir şey için kullanılmadığından bu, özellikle kimse için yararlı değildir. Yalnızca isteğe ek yük ekler.

Bu istenmeyen bir etkiyse bunu neden yapmak istiyorsunuz? Sitelerin üçüncü taraf bağlamında kullanılırken durumunu korumasını sağlayan bu mekanizmadır. Örneğin, sitenize bir YouTube videosu yerleştirirseniz ziyaretçiler oynatıcıda "Daha sonra izle" seçeneğini görürler. Ziyaretçiniz YouTube'da oturum açtıysa bu oturum, üçüncü taraf çerezi tarafından yerleştirilmiş oynatıcıda kullanılabilir hale getirilir. Bu durumda, "Daha sonra izle" düğmesi, ziyaretçinizden oturum açmasını istemek veya ziyaretçinin sayfanızdan çıkıp YouTube'a geri gitmesini gerektirmeden videoyu tek seferde kaydeder.

Aynı çerezin üç farklı bağlamda gönderilmesi
Farklı sayfalar ziyaret edildiğinde üçüncü taraf bağlamında bir çerez gönderilir.

Web'in kültürel özelliklerinden biri, varsayılan olarak açık olma eğilimindedir. Bu, birçok kullanıcının kendi içeriklerini ve uygulamalarını oluşturmasını sağlayan unsurlardan biridir. Ancak bu durum, güvenlik ve gizlilikle ilgili bir dizi endişeyi de beraberinde getirdi. Siteler arası istek sahteciliği (CSRF) saldırıları, isteği başlatan kişiden bağımsız olarak belirli bir kaynağa yapılan tüm isteklere çerezlerin eklenmesi gerçeğine dayanır. Örneğin, evil.example adresini ziyaret ederseniz your-blog.example istekleri tetiklenebilir ve tarayıcınız ilişkili çerezleri memnuniyetle ekler. Blogunuz bu istekleri doğrulama konusunda dikkatli olmazsa evil.example, yayınları silme veya kendi içeriklerini ekleme gibi işlemleri tetikleyebilir.

Kullanıcılar, çerezlerin birden fazla sitedeki etkinliklerini izlemek için nasıl kullanılabileceği konusunda da daha bilinçli hale geliyor. Ancak şimdiye kadar niyetinizi çerezle açıkça belirtmenin bir yolu yoktu. promo_shown çereziniz yalnızca birinci taraf bağlamında gönderilmelidir. Diğer sitelere yerleştirilmesi amaçlanan bir widget'ın oturum çerezi ise oturum açmış durumunu üçüncü taraf bağlamında sağlamak için kasıtlı olarak oradadır.

Uygun SameSite özelliğini ayarlayarak çerezle ilgili amacınızı açıkça belirtebilirsiniz.

Birinci taraf çerezlerinizi tanımlamak ve uygun özellikleri ayarlamak için Birinci taraf çerez tarifleri başlıklı makaleyi inceleyin.