Developer yang menggunakan COEP kini dapat menyematkan iframe pihak ketiga yang tidak menggunakan COEP sendiri.
Mengapa kita membutuhkan COEP
Beberapa web API meningkatkan risiko serangan side-channel seperti
Spectre. Untuk
mengurangi risiko tersebut, browser menawarkan lingkungan terisolasi berbasis keikutsertaan yang disebut
isolasi lintas origin, yang, antara lain,
memerlukan deployment COEP. Hal ini memungkinkan situs menggunakan fitur hak istimewa,
termasuk
SharedArrayBuffer
,
performance.measureUserAgentSpecificMemory()
,
dan
timer presisi tinggi dengan resolusi yang lebih baik.
Untuk mengaktifkan isolasi lintas origin, 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 asal menghadirkan keamanan halaman yang lebih baik dan kemampuan untuk mengaktifkan fitur canggih, men-deploy COEP bisa jadi sulit. Salah satu tantangan terbesar 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 penerapan COEP-nya mungkin tidak mudah.
Iframe anonim untuk menyelamatkan
Di situlah iframe anonim berperan. Dengan menambahkan atribut anonymous
ke
elemen <iframe>
, iframe dimuat dari partisi penyimpanan efemeral yang berbeda
dan tidak lagi tunduk pada batasan COEP.
Contoh:
<iframe anonymous src="https://example.com">
Iframe dibuat dalam konteks singkat yang baru dan tidak memiliki akses ke cookie apa pun yang terkait dengan situs tingkat atas. Dimulai dari stoples kue yang kosong. Demikian pula, API penyimpanan seperti
LocalStorage
,
CacheStorage
,
IndexedDB
, dan
lainnya, memuat dan menyimpan data di partisi efemeral baru. Partisi ini
mencakup dokumen tingkat atas dan asal iframe saat ini. Penyimpanan akan dihapus setelah dokumen tingkat atas dihapus muatannya.
Iframe anonim tidak tunduk pada aturan penyematan COEP. Tindakan ini masih aman, karena dimuat dari konteks kosong baru setiap saat. Item tersebut akan dimuat tanpa personalisasi datanya. Mereka hanya berisi data publik, yang tidak berguna bagi penyerang.
Demo
Anda dapat melihat iframe anonim di: https://anonymous-iframe.glitch.me/
Mendaftar ke uji coba origin
Untuk memastikan bahwa iframe Anonim membantu developer menerapkan isolasi lintas origin, kami menyediakannya di Chrome dari versi 106 hingga 108 sebagai uji coba origin.
Daftar ke uji coba origin untuk mengaktifkan situs Anda agar dapat menggunakan iframe Anonim:
- Minta token untuk origin Anda.
- Gunakan token dengan salah satu cara berikut:
- Di HTML Anda:
html <meta http-equiv="Origin-Trial" content="TOKEN_GOES_HERE">
- Di JavaScript:
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
- Di 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. Hal ini berarti dapat diaktifkan oleh skrip yang disematkan di halaman.
Pelajari lebih lanjut cara mendaftar ke uji coba origin pihak ketiga.
FAQ
Apakah fitur ini akan digunakan oleh browser lain?
- Permintaan untuk posisi Mozilla: Pending
- Permintaan Webkit untuk posisi: Tidak ada sinyal
- W3C TAG Permintaan untuk posisi: terpenuhi
Apakah iframe bertingkat di dalam <iframe anonymous>
bersifat anonim?
Ya. Ini diwariskan. Jika iframe bersifat anonim, kebijakan tersebut akan berlaku untuk semua iframe
di seluruh subhierarki meskipun tanpa atribut anonymous
.
Apakah pop-up juga dibuat dari <iframe anonymous>
anonim?
Pop-up dibuka seolah-olah noopener
disetel. Tabel sementara dibuat dari konteks tingkat atas reguler yang baru dan tidak anonim. Mereka tidak dapat berkomunikasi
dengan iframe anonim.
Referensi
- Membuat situs Anda "diisolasi lintas origin" menggunakan COOP dan COEP
- Alasan Anda memerlukan "diisolasi lintas origin" untuk fitur canggih
- Panduan untuk mengaktifkan isolasi lintas asal
- Update SharedArrayBuffer di Android Chrome 88 dan Chrome 92 Desktop
- Memuat resource lintas origin tanpa header CORP menggunakan
COEP: credentialless