Mulai 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 sandbox pihak pertama.
Apa yang dimaksud dengan iframe yang ditempatkan dalam sandbox?
Iframe sandbox adalah iframe dengan
pembatasan khusus. Mereka diperlakukan sebagai memiliki asal null,
buram. Secara default, fitur yang berpotensi berbahaya seperti skrip, formulir, dan pop-up tidak tersedia dalam iframe sandbox.
Gunakan atribut sandbox untuk
menentukan
fitur mana yang harus tersedia di iframe sandbox. Contoh:
<iframe sandbox="allow-scripts" src="example-sandboxed-frame.html"/>
Sandbox selalu merupakan ide yang baik, karena memungkinkan Anda memilih izin yang diperlukan untuk memuat konten sematan secara terperinci, sekaligus membatasi cakupan potensi eksploitasi.
Mengapa kami memerlukan kebijakan baru ini?
Sebelum diperkenalkannya allow-same-site-none-cookies, Anda dapat mengonfigurasi
dua skenario cookie dalam iframe sandbox:
- Tanpa token
allow-same-origindi atributsandbox, origin iframe akan diserialisasi sebagainull, sehingga semua permintaan dari halaman yang di-sandbox bersifat lintas situs. Dalam hal ini, hanya cookie denganSameSite=Noneyang akan disertakan dalam permintaan. - Dengan token
allow-same-origindi atributsandbox, permintaan akan diperlakukan seolah-olah berasal dari origin sebenarnya iframe, sehingga cookie dengan nilaiSameSiteapa pun dapat dikirim.
Dengan cookie pihak ketiga yang diblokir, iframe yang di-sandbox tanpa allow-same-origin
tidak dapat mengirim cookie apa pun kecuali jika Anda mengaktifkan allow-same-site-none-cookies.
Iframe dengan allow-same-origin akan tetap dapat menyertakan cookie dalam permintaan situs yang sama, meskipun cookie pihak ketiga diblokir. Namun, seluruh penyimpanan cookie asal 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
dapat disematkan oleh pengguna lain sebagai iframe dalam project mereka tanpa disadari. 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 yang di-sandbox. Misalnya, iframe yang di-sandbox mungkin memerlukan cookie practice-coding.example/coding-interview untuk memungkinkan kandidat membuka kembali kode mereka.SameSite=None
allow-same-site-none-cookies mencegah tereksposnya seluruh jar cookie sekaligus
mengizinkan cookie SameSite=None yang diperlukan secara selektif.
Bagaimana cara mengizinkan hanya SameSite=None dalam frame sandbox pihak pertama?
Untuk mengaktifkan cookie SameSite=None dalam permintaan dari halaman sandbox pihak pertama,
tentukan token allow-same-site-none-cookies dalam tag iframe. Contoh:
<iframe sandbox="allow-same-site-none-cookies" src="example-sandboxed-page.html"/>
Anda juga dapat menyetel 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
Buat masalah untuk membagikan masukan atau melaporkan masalah, atau bergabung dalam diskusi di GitHub.