Nilai sandbox allow-same-site-none-cookies baru dari Chrome 135

Natalia Markoborodova
Natalia Markoborodova

Dari Chrome 135, Anda dapat menggunakan nilai sandbox baru: allow-same-site-none-cookies. Jika kebijakan ini ditentukan dan cookie pihak ketiga tidak tersedia, browser hanya akan mengirim cookie SameSite=None dalam permintaan HTTP yang berasal dari iframe dengan sandbox pihak pertama.

Apa yang dimaksud dengan iframe dengan sandbox?

Iframe dengan sandbox adalah iframe dengan pembatasan khusus. Token ini diperlakukan sebagai memiliki asal null, buram. Secara default, fitur yang berpotensi berbahaya seperti skrip, formulir, dan pop-up tidak tersedia dalam iframe dengan sandbox.

Gunakan atribut sandbox untuk menentukan fitur yang harus tersedia di iframe dengan sandbox. Contoh:

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

Sandboxing selalu merupakan ide yang bagus, karena memungkinkan Anda memilih secara terperinci izin yang diperlukan agar konten tersemat berhasil dimuat, sekaligus membatasi cakupan potensi eksploitasi.

Mengapa kami memerlukan kebijakan baru ini?

Sebelum allow-same-site-none-cookies diperkenalkan, Anda dapat mengonfigurasi dua skenario cookie dalam iframe dengan sandbox:

  • Tanpa token allow-same-origin di atribut sandbox, origin iframe akan diserialisasi sebagai null, sehingga semua permintaan dari halaman dengan sandbox bersifat lintas situs. Dalam hal ini, hanya cookie dengan SameSite=None yang akan disertakan dalam permintaan.
  • Dengan token allow-same-origin di atribut sandbox, permintaan dianggap berasal dari origin sebenarnya iframe, sehingga cookie dengan nilai SameSite apa pun dapat dikirim.

Dengan cookie pihak ketiga yang diblokir, iframe dengan sandbox yang tidak memiliki allow-same-origin tidak dapat mengirim cookie apa pun kecuali jika Anda mengaktifkan allow-same-site-none-cookies.

Iframe dengan allow-same-origin masih dapat menyertakan cookie dalam permintaan situs yang sama, meskipun cookie pihak ketiga diblokir. Namun, toples cookie seluruh origin akan terekspos ke aktivitas web yang berpotensi berbahaya.

Dengan allow-same-site-none-cookies, iframe dapat mengirim cookie SameSite=None dalam permintaan HTTP, sementara cookie SameSite=Strict dan SameSite=Lax yang berpotensi sensitif tidak akan disertakan.

Contoh praktis

Pertimbangkan situs, practice-coding.example, yang memungkinkan pengguna membuat dan menjalankan project coding kustom serta menyematkan kode pengguna lain. Untuk menggunakan layanan, pengguna harus login, sehingga cookie sesi SameSite=Strict ditetapkan.

Pengguna lain membuat project, practice-coding.example/cookie-theft, yang tidak diketahui pengguna lain dapat disematkan sebagai iframe dalam project mereka. Jika cookie SameSite=Strict dan SameSite=Lax diekspos ke iframe practice-coding.example/cookie-theft, pengguna berbahaya dapat mencuri cookie sesi pengguna lain.

Dalam skenario ini, pemilik situs mungkin ingin membatasi akses ke cookie yang berpotensi sensitif. Namun, mereka mungkin masih ingin mengizinkan cookie SameSite=None dalam iframe dengan sandbox. Misalnya, iframe dengan sandbox practice-coding.example/coding-interview mungkin memerlukan cookie SameSite=None untuk mengizinkan kandidat meninjau kembali kode mereka. allow-same-site-none-cookies mencegah eksposur seluruh cookie jar sekaligus mengizinkan cookie SameSite=None yang diperlukan secara selektif.

Bagaimana cara mengizinkan hanya SameSite=None dalam frame dengan sandbox pihak pertama?

Untuk mengaktifkan cookie SameSite=None dalam permintaan dari halaman dengan sandbox pihak pertama, tentukan token allow-same-site-none-cookies di tag iframe. Contoh:

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

Anda juga dapat menetapkan kebijakan allow-same-site-none-cookies dengan Header HTTP Content-Security-Policy:

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

Cobalah sendiri dengan demo kami.

Berinteraksi dan memberikan masukan

Ajukan masalah untuk membagikan masukan atau melaporkan masalah, atau bergabung dengan diskusi di GitHub.