Yeni SameSite=None; Güvenli Çerez Ayarları için Hazır Olun

16 Ocak 2020, Perşembe

Chromium geliştirici blogundan alınan bu yazıda, Chrome'daki değişikliklerin ileride kullanıcılarınızın web sitenizdeki deneyimini nasıl etkileyebileceği anlatılmaktadır.

Mayıs ayında Chrome, yeni bir çerez sınıflandırma sistemi (spec) tarafından sağlanan varsayılan olarak güvenli bir çerez modeli kullanacağını duyurmuştu. Bu girişim, web genelinde gizliliği ve güvenliği artırmak için sürdürdüğümüz çalışmalar kapsamında değerlendirilebilir.

Chrome, yeni modeli, Şubat 2020'de çıkacak Chrome 80 sürümünde kullanmayı planlamaktadır. Mozilla ve Microsoft da kendi zaman çizelgelerine göre yeni modeli Firefox ve Edge'de kullanmayı düşündüklerini belirtmiştir. Chrome değişikliklerine daha birkaç ay olsa da, çerezleri yöneten geliştiricilerin bu duruma hazırlıklı olup olmadıklarını bugünden değerlendirmeleri önemlidir. Bu blog yayınında üst düzey kavramlar ana hatlarıyla ele alınmıştır. Geliştiriciler yardım için web.dev'deki SameSite Cookies Explained (SameSite Çerezleri Hakkında Bilgi) başlıklı yazıya bakabilirler.

Web siteleri genellikle reklamlar, içerik önerileri, üçüncü taraf widget'ları, sosyal medya yerleştirmeleri ve diğer özellikler için harici hizmetleri entegre eder. Bu harici hizmetler siz web'de gezinirken tarayıcınızda çerezler depolayabilir ve kişiselleştirilmiş deneyimler sunmak ya da kitle etkileşimini ölçmek için daha sonra bu çerezlere erişebilir. Her çerez, kendisiyle ilişkilendirilmiş bir alan adına sahiptir. Bir çerezle ilişkilendirilen alan adı, kullanıcının adres çubuğundaki web sitesiyle değil de harici bir hizmetle eşleşiyorsa bu, siteler arası (veya "üçüncü taraf") bağlamı olarak kabul edilir.

Bir çerezin aynı tüzel kişiye ait birden fazla web sitesinde kullanılması da önceki örnek kadar bariz olmasa da siteler arası kullanım kategorisine girer. Çerezin ve web sitelerinin sahibi aynı tüzel kişi olsa da, çerezin alan adı, çereze erişilen sitelerle eşleşmediğinden bu, siteler arası veya "üçüncü taraf" bağlamı olarak kabul edilir.

Sitenin alan adı, çerezin alan adıyla eşleşmiyor

Bir web sayfasındaki harici bir kaynak, sitenin alan adıyla eşleşmeyen bir çereze eriştiğinde buna siteler arası veya "üçüncü taraf" bağlamı denir.

Buna karşılık, bir çerezin alan adı, kullanıcının adres çubuğundaki web sitesi alan adıyla eşleştiğinde aynı site (veya "birinci taraf") bağlamında çerez erişimi gerçekleşir. Aynı site çerezleri genellikle web sitelerinde kullanıcıların oturumunu açık tutmak, tercihlerini hatırlamak ve site analizlerini desteklemek için kullanılır.

Sitenin alan adı, çerezin alan adıyla eşleşiyor

Bir web sayfasındaki kaynak, kullanıcının ziyaret ettiği siteyle eşleşen bir çereze eriştiğinde bu, aynı site veya "birinci taraf" bağlamı olur.

Günümüzde bir çereze yalnızca birinci taraf bağlamında erişilmesi amaçlanıyorsa geliştirici, harici erişimi önlemek için iki ayardan birini (SameSite=Lax veya SameSite=Strict) uygulayabilir. Ancak, bu uygulama önerilmesine rağmen çok az sayıda geliştirici tarafından tercih edilmektedir. Bu da birçok aynı site çerezini gereksiz yere Siteler Arası İstek Sahteciliği saldırıları gibi tehditlere açık hale getirmektedir.

Varsayılan olarak güvenli olan yeni model, daha fazla web sitesini ve kullanıcılarını korumak için, aksi belirtilmediği sürece tüm çerezlerin harici erişimden korunması gerektiğini varsayar. Geliştiriciler, siteler arası erişim sağlayacak çerezleri belirlemek için yeni bir çerez ayarı (SameSite=None) kullanmalıdır. SameSite=None özelliği mevcut olduğunda, siteler arası çerezlere yalnızca HTTPS bağlantıları üzerinden erişilebilmesini sağlamak için ek bir Secure özelliği kullanılmalıdır. Bu, siteler arası erişimle ilgili tüm riskleri ortadan kaldırmasa da ağ saldırılarına karşı koruma sağlar.

Siteler arası çerezlerin açıkça belirtilmesi, doğrudan güvenlik avantajlarının yanı sıra daha fazla şeffaflık sağlar ve kullanıcıya seçme özgürlüğü tanır. Örneğin, tarayıcılar yalnızca tek bir siteden erişilen çerezleri yönetmek için kullanıcılara ayrıntılı kontroller sunabilir. Birden çok siteden erişilen çerezlerin kontrolleri ise ayrı olur.

Chrome Yaptırımı Şubat 2020'de Başlıyor

Şubat ayında kullanıma sunulacak Chrome 80 sürümünde, SameSite değeri belirtilmemiş çerezler SameSite=Lax çerezleri olarak değerlendirilecektir. Yalnızca SameSite=None; Secure ayarı yapılmış çerezlere, bağlantıların güvenli olması şartıyla harici erişim sağlanabilecektir. SameSite=None ve Secure için Chrome Platform Status izleyiciler en yeni lansman bilgileriyle güncellenmeye devam edecektir.

Mozilla, Firefox'taki siteler arası çerezler için SameSite=None; Secure şartlarını uygulamayı düşündüğünü açıklayarak yeni çerez sınıflandırma modelini desteklediğini ifade etmiştir. Microsoft ise bu modeli Microsoft Edge 80'de deneme olarak uygulamaya başlamayı planladığını kısa süre önce duyurmuştur.

Nasıl Hazırlanabilirsiniz? Bilinen Zorluklar

Siteler arası çerezleri yönetiyorsanız SameSite=None; Secure ayarını bu çerezlere uygulamanız gerekir. Çoğu geliştirici bunda zorlanmayacaktır. Ancak aşağıdakiler gibi zorlukları ve özel durumları tespit etmek için şimdiden testlere başlamanızı öneririz:

  • Tüm diller ve kitaplıklar henüz None değerini desteklemediğinden geliştiriciler çerez başlığını doğrudan ayarlamak durumundadır. SameSite=None; Secure ayarını çeşitli dillerde, kitaplıklarda ve çerçevelerde uygulamayla ilgili talimatları bu GitHub deposunda bulabilirsiniz.
  • Chrome, Safari ve UC Browser'ın belirli sürümleri dahil olmak üzere bazı tarayıcılar, None değerini istenmeyen şekillerde işleyebilir. Bu da geliştiricilerin bu istemciler için istisnaları kodlamasını gerektirebilir. Chrome'un eski sürümleri tarafından desteklenen Android WebViews bunlardan biridir. Bilinen uyumsuz istemcilerin listesini burada bulabilirsiniz.
  • Android WebView'da yeni modelin uygulanması hemen zorunlu tutulmayacaktır. Ancak yine de uygulama geliştiricilere, hem HTTP(S) başlıkları hem de Android WebView CookieManager API üzerinden erişilen çerezler için, None değeriyle uyumlu Chrome sürümlerine göre Android WebViews için uygun SameSite cookie ayarlarını beyan etmeleri önerilir.
  • Tek oturum açma veya dahili uygulamalar gibi bazı hizmetler Şubat ayındaki lansmana hazır değilse kurumsal BT yöneticilerinin, Chrome Tarayıcı'yı geçici olarak eski davranışına geri döndürmek için özel politikalar uygulaması gerekebilir.
  • Hem birinci hem de üçüncü taraf bağlamında eriştiğiniz çerezler varsa birinci taraf bağlamında SameSite=Lax için sunulan güvenlik avantajlarından yararlanmak için ayrı çerezler kullanabilirsiniz.

SameSite Cookies Explained başlıklı yazıda, yukarıdaki durumlarda ne yapılabileceği açıklanmakta, ayrıca sorunları ve soruları paylaşabileceğiniz kanallar sunulmaktadır.

Yeni Chrome davranışının siteniz veya yönettiğiniz çerezler üzerindeki etkisini test etmek için Chrome 76 ve sonraki sürümlerde chrome://flags adresine giderek "SameSite by default cookies" ve "Cookies without SameSite must be secure" denemelerini etkinleştirebilirsiniz. Ayrıca, bu denemeler Chrome 79 Beta kullanıcılarının bir kısmı için otomatik olarak etkinleştirilecektir. Denemeleri etkinleştirilen bazı Beta kullanıcıları, henüz yeni modeli desteklemeyen hizmetlerle uyumsuzluk sorunları yaşayabilir. Kullanıcılar isterlerse chrome://flags adresine giderek Beta denemelerini devre dışı bırakabilirler.

Yalnızca aynı site bağlamında erişilen çerezleri (aynı site çerezleri) yönetiyorsanız herhangi bir işlem yapmanız gerekmez. SameSite özelliği eksik olsa veya herhangi bir değer ayarlanmamış olsa bile Chrome bu çerezlere harici tüzel kişiler tarafından erişilmesini otomatik olarak engeller. Ancak tüm tarayıcılar varsayılan olarak aynı site çerezlerini korumadığından, uygun bir SameSite değeri (Lax veya Strict) kullanmanızı ve varsayılan tarayıcı davranışına güvenmemenizi önemle tavsiye ederiz.

Son olarak, tedarikçilerin ve web sitenize hizmet sağlayan diğer kişilerin hazırlık durumuyla ilgili endişeleriniz varsa Chrome 77 ve sonraki sürümlerde Geliştirici Araçları konsolu uyarılarını kontrol edebilirsiniz. Bir sayfanın siteler arası çerezlerinde gerekli ayarlar eksik olduğunda aşağıdaki gibi bir uyarı gösterilir:

Çerez alan adında siteler arası bir kaynakla ilişkilendirilen bir çerez, "SameSite" özelliği olmadan ayarlanmış

Aralarında belirli Google hizmetlerinin de bulunduğu bazı sağlayıcılar, Şubat ayında Chrome 80 sürümü kullanıma sunulana kadar gerekli değişiklikleri yapacaktır. İş ortaklarınızın bu değişikliğe hazır olup olmadığını öğrenmek için onlarla iletişime geçebilirsiniz.