Developer yang menggunakan COEP kini dapat menyematkan iframe pihak ketiga yang tidak menggunakan COEP.
Alasan kita memerlukan COEP
Beberapa API web meningkatkan risiko serangan side-channel seperti
Spectre. Untuk
memitigasi risiko tersebut, browser menawarkan lingkungan terisolasi berbasis keikutsertaan yang disebut
isolasi lintas-asal, yang, antara lain,
memerlukan deployment COEP. Hal ini memungkinkan situs menggunakan fitur istimewa
termasuk
SharedArrayBuffer
,
performance.measureUserAgentSpecificMemory()
,
dan
penghitung waktu presisi tinggi dengan resolusi lebih baik.
Untuk mengaktifkan isolasi lintas-asal, situs harus mengirim dua header HTTP berikut:
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
Tantangan dalam mengaktifkan COEP
Meskipun isolasi lintas origin memberikan keamanan yang lebih baik dan kemampuan untuk mengaktifkan fitur yang canggih, men-deploy COEP dapat sulit. Salah satu tantangan terbesarnya adalah semua iframe lintas origin juga harus men-deploy COEP dan CORP. Iframe tanpa header tersebut tidak akan dimuat oleh browser.
Iframe biasanya ditayangkan oleh pihak ketiga yang mungkin tidak mudah untuk men-deploy COEP.
iframe anonim menyelamatkan
Di sinilah iframe anonim berperan. Dengan menambahkan atribut anonymous
ke
elemen <iframe>
, iframe dimuat dari partisi penyimpanan sementara
yang berbeda dan tidak tunduk kepada pembatasan COEP lagi.
Contoh:
<iframe anonymous src="https://example.com">
Iframe dibuat dalam konteks sementara baru dan tidak memiliki akses ke
cookie apa pun yang terkait dengan situs tingkat teratas. Proses ini dimulai dari jar cookie
kosong. Demikian pula, API penyimpanan seperti
LocalStorage
,
CacheStorage
,
IndexedDB
, dan sebagainya, memuat dan menyimpan data di partisi efemeral baru. Partisi
dibatasi untuk dokumen level teratas saat ini dan asal iframe. Penyimpanan akan dihapus setelah dokumen tingkat atas dihapus muatannya.
Iframe anonim tidak tunduk pada aturan penyematan COEP. Ini masih aman, karena dimuat dari konteks kosong baru setiap saat. Halaman tersebut akan dimuat tanpa mempersonalisasi data mereka. File ini hanya berisi data publik, yang tidak bernilai bagi penyerang.
Demo
Anda dapat melihat iframe anonim di: https://anonymous-iframe.glitch.me/
Mendaftar untuk uji coba origin
Untuk memastikan bahwa iframe Anonim membantu developer mengadopsi isolasi lintas origin, kami menyediakannya di Chrome dari versi 106 hingga 108 sebagai uji coba origin.
Daftar ke uji coba origin agar situs Anda dapat menggunakan iframe Anonim:
- Minta token untuk origin Anda.
- Gunakan token dengan salah satu cara berikut:
- Dalam HTML Anda:
html <meta http-equiv="Origin-Trial" content="TOKEN_GOES_HERE">
- Di JavaScript Anda:
js const meta = document.createElement('meta'); meta.httpEquiv = 'Origin-Trial'; meta.content = 'TOKEN_GOES_HERE'; document.head.append(meta);
- Di header HTTP:
text Origin-Trial: TOKEN_GOES_HERE
- Dalam HTML Anda:
- Tambahkan iframe anonim ke halaman Anda:
html <iframe anonymous src="https://example.com">
Jika Anda memiliki masukan tentang fitur ini, ajukan masalah di repositori GitHub.
Uji coba origin pihak ketiga
Uji coba origin juga tersedia untuk skrip pihak ketiga. Artinya, fitur ini dapat diaktifkan oleh skrip yang disematkan di halaman.
Pelajari lebih lanjut cara mendaftar uji coba origin pihak ketiga.
FAQ
Apakah fitur ini akan digunakan oleh browser lain?
- Permintaan Mozilla untuk posisi: Tertunda
- Permintaan Webkit untuk posisi: Tidak ada sinyal
- W3C TAG Permintaan posisi: terpenuhi
Apakah iframe yang disusun bertingkat di dalam <iframe anonymous>
bersifat anonim?
Ya. Ini diwariskan. Setelah iframe menjadi anonim, hal ini berlaku untuk semua iframe
di seluruh subpohon meskipun tanpa atribut anonymous
.
Apakah pop-up yang dibuat dari <iframe anonymous>
juga bersifat anonim?
Pop-up dibuka seolah-olah noopener
telah ditetapkan. Insight dibuat dari konteks tingkat atas reguler yang baru dan tidak bersifat anonim. Mereka tidak dapat berkomunikasi dengan
iframe anonim.
Resource
- Membuat situs Anda "terisolasi lintas origin" menggunakan COOP dan COEP
- Alasan Anda memerlukan "diisolasi lintas asal" untuk fitur yang canggih
- Panduan untuk mengaktifkan isolasi lintas origin
- Update SharedArrayBuffer di Chrome Android 88 dan Chrome Desktop 92
- Memuat resource lintas-asal tanpa header CORP menggunakan
COEP: credentialless