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-origindi atributsandbox, origin iframe diserialisasi sebagainull, sehingga semua permintaan dari halaman dengan sandbox bersifat lintas situs. Dalam hal ini, hanya cookie denganSameSite=Noneyang akan disertakan dalam permintaan. - Dengan token
allow-same-origindi atributsandbox, permintaan diperlakukan sebagai berasal dari origin sebenarnya iframe, sehingga cookie dengan nilaiSameSiteapa 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 bergabunglah dengan diskusi di GitHub.