Chrome 135'ten itibaren yeni korumalı alan allow-same-site-none-cookies değeri

Natalia Markoborodova
Natalia Markoborodova

Chrome 135'ten itibaren yeni sandbox değerini kullanabilirsiniz: allow-same-site-none-cookies. Bu politika belirtildiğinde ve üçüncü taraf çerezleri kullanılamadığında tarayıcı, yalnızca birinci taraf korumalı alanlı iFrame'lerden kaynaklanan HTTP isteklerinde SameSite=None çerezlerini gönderir.

Korumalı alan iFrame'i nedir?

Korumalı alan iframe'leri, özel kısıtlamalara sahip iframe'lerdir. null, opak kaynaklı olarak kabul edilirler. Varsayılan olarak, komut dosyaları, formlar ve pop-up'lar gibi zararlı olabilecek özellikler korumalı alana alınmış iframe'lerde kullanılamaz.

Korumalı alan iframe'inin hangi özelliklere sahip olması gerektiğini sandbox özelliğiyle belirtin. Örneğin:

 <iframe sandbox="allow-scripts" src="example-sandboxed-frame.html"/>

Yerleştirilmiş içeriğin başarıyla yüklenmesi için gereken izinleri ayrıntılı bir şekilde seçmenize olanak tanırken olası güvenlik açıklarının kapsamını da sınırladığı için her zaman sandbox kullanmanız önerilir.

Bu yeni politikaya neden ihtiyaç duyuyoruz?

allow-same-site-none-cookies kullanıma sunulmadan önce, korumalı alan iframe'inde iki çerez senaryosu yapılandırabiliyordunuz:

  • sandbox özelliğindeki allow-same-origin jetonu olmadan iframe'in kaynağı serileştirilerek null olarak ayarlanır. Bu durumda, korumalı alanlı sayfadan gelen tüm istekler siteler arası olur. Bu durumda, isteklere yalnızca SameSite=None içeren çerezler dahil edilir.
  • sandbox özelliğindeki allow-same-origin jetonuyla istekler, iFrame'in gerçek kaynağına aitmiş gibi değerlendirilir. Bu sayede, herhangi bir SameSite değerine sahip çerezlerin gönderilmesine izin verilir.

Üçüncü taraf çerezleri engellendiğinde, allow-same-origin içermeyen bir korumalı alan iframe'i, allow-same-site-none-cookies'yi etkinleştirmediğiniz sürece çerez gönderemez.

allow-same-origin içeren bir iFrame, üçüncü taraf çerezleri engellendiğinde bile aynı site isteklerine çerez ekleyebilir. Ancak kaynağın tamamının çerez kavanozu, kötü amaçlı olabilecek web etkinliğine maruz kalır.

allow-same-site-none-cookies ile bir iFrame, HTTP isteklerinde SameSite=None çerezleri gönderebilir. Bu sırada hassas olabilecek SameSite=Strict ve SameSite=Lax çerezleri dahil edilmez.

Pratik örnek

Kullanıcıların özel kodlama projeleri oluşturup çalıştırmasına ve diğer kullanıcıların kodlarını yerleştirmesine olanak tanıyan practice-coding.example sitesini ele alalım. Hizmeti kullanmak için kullanıcıların oturum açması gerekir. Bu durumda SameSite=Strict oturum çerezi ayarlanır.

Başka bir kullanıcı, diğer kullanıcıların projelerine iFrame olarak yerleştirebileceği practice-coding.example/cookie-theft adlı bir proje oluşturur. SameSite=Strict ve SameSite=Lax çerezleri practice-coding.example/cookie-theft iFrame'ine maruz kalırsa kötü niyetli kullanıcılar diğer kullanıcıların oturum çerezlerini çalabilir.

Bu senaryoda, site sahibi hassas olabilecek çerezlere erişimi kısıtlamak isteyebilir. Ancak yine de korumalı alanlı iFrame'lerde SameSite=None çerezlerine izin vermek isteyebilirler. Örneğin, practice-coding.example/coding-interview sandboxed iframe, adayların kodlarını tekrar ziyaret etmelerine izin vermek için SameSite=None çerez gerektirebilir. allow-same-site-none-cookies, gerekli SameSite=None çerezlerine seçici olarak izin verirken tüm çerez kavanozunun açığa çıkmasını engeller.

Birinci taraf korumalı alan çerçevelerinde yalnızca SameSite=None öğesine nasıl izin verebilirim?

Birinci taraf korumalı alan sayfalarından gelen isteklerde SameSite=None çerezlerini etkinleştirmek için iframe etiketinde SameSite=None jetonunu belirtin.allow-same-site-none-cookies Örneğin:

 <iframe sandbox="allow-same-site-none-cookies" src="example-sandboxed-page.html"/>

allow-same-site-none-cookies HTTP üstbilgisi içeren bir Content-Security-Policy politikası da ayarlayabilirsiniz:

Content-Security-Policy: sandbox allow-same-site-none-cookies;

Demomuzla kendiniz deneyin.

Etkileşim kurma ve geri bildirim paylaşma

Geri bildirim paylaşmak veya sorun bildirmek için sorun bildirin ya da GitHub'daki tartışmaya katılın.