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ı alan iframe'lerinden gelen HTTP isteklerinde SameSite=None
çerezleri gönderir.
Korumalı alan iFrame'i nedir?
Korumalı alan iframe'leri, özel kısıtlamalara sahip iframe'lerdir. Bu kaynaklar, null
, opak bir kaynağa sahip olarak kabul edilir. Komut dosyaları, formlar ve pop-up'lar gibi zararlı olabilecek özellikler, varsayılan olarak korumalı alana alınmış iframe'lerde kullanılamaz.
Korumalı alan içeren iframe'lerin hangi özelliklere sahip olması gerektiğini belirtmek için sandbox
özelliğini kullanın. Örneğin:
<iframe sandbox="allow-scripts" src="example-sandboxed-frame.html"/>
Potansiyel kötüye kullanımların kapsamını sınırlarken, yerleştirilmiş içeriğin başarılı bir şekilde yüklenmesi için gereken izinleri ayrıntılı olarak seçmenize olanak tanıdığı için korumalı alan her zaman iyi bir fikirdir.
Bu yeni politikaya neden ihtiyacımız var?
allow-same-site-none-cookies
kullanıma sunulmadan önce, korumalı alan içeren bir iframe'de iki çerez senaryosu yapılandırabiliyordunuz:
sandbox
özelliğindeallow-same-origin
jetonu olmadan iframe'in kaynağınull
olarak dizilenir. Bu da korumalı alan sayfasından gelen tüm isteklerin siteler arası olmasını sağlar. Bu durumda, istekler yalnızcaSameSite=None
içeren çerezleri içerir.sandbox
özelliğindekiallow-same-origin
jetonu sayesinde istekler, iframe'ın gerçek kaynağından geliyormuş gibi değerlendirilir. Bu sayede, herhangi birSameSite
değeri içeren çerezlerin gönderilmesine izin verilir.
Üçüncü taraf çerezleri engellendiğinde, allow-same-origin
içermeyen korumalı alan iframe'i allow-same-site-none-cookies
'ü 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 dahil etmeye devam edebilir. Ancak kaynağın tüm çerez kabı, kötü amaçlı olabilecek web etkinliklerine maruz kalır.
allow-same-site-none-cookies
ile bir iframe, HTTP isteklerinde SameSite=None
çerezleri gönderebilir. Bu durumda, 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 kodunu yerleştirmesine olanak tanıyan practice-coding.example
adlı bir siteyi düşünün. Hizmeti kullanmak için kullanıcıların oturum açması gerekir. Bu işlem sonucunda bir SameSite=Strict
oturum çerezi ayarlanır.
Başka bir kullanıcı, diğer kullanıcıların bilmeden projelerinde 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ü amaçlı kullanıcı diğer kullanıcıların oturum çerezlerini çalabilir.
Bu senaryoda site sahibi, hassas olabilecek çerezlere erişimi kısıtlamak isteyebilir. Ancak, korumalı alan içi iFrame'lerde SameSite=None
çerezlerine izin vermek isteyebilirler. Örneğin, practice-coding.example/coding-interview
korumalı alan iframe'i, adayların kodlarını tekrar ziyaret etmesine izin vermek için SameSite=None
çerezleri gerektirebilir.
allow-same-site-none-cookies
, gerekli SameSite=None
çerezlerine seçerek izin verirken çerez kabının tamamının gösterilmesini 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 allow-same-site-none-cookies
jetonunu belirtin. Örneğin:
<iframe sandbox="allow-same-site-none-cookies" src="example-sandboxed-page.html"/>
Content-Security-Policy
HTTP üstbilgisini kullanarak da allow-same-site-none-cookies
politikası ayarlayabilirsiniz:
Content-Security-Policy: sandbox allow-same-site-none-cookies;
Demomuzu kullanarak bu özelliği kendiniz de deneyebilirsiniz.
Etkileşim kurma ve geri bildirim paylaşma
Geri bildirim paylaşmak veya sorunları bildirmek için sorun bildirin ya da GitHub'daki tartışmaya katılın.