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 atributsandbox
, origin iframe akan diserialisasi sebagainull
, sehingga semua permintaan dari halaman dengan sandbox bersifat lintas situs. Dalam hal ini, hanya cookie denganSameSite=None
yang akan disertakan dalam permintaan. - Dengan token
allow-same-origin
di atributsandbox
, permintaan dianggap berasal dari origin sebenarnya iframe, sehingga cookie dengan nilaiSameSite
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.