Developer yang menggunakan COEP kini dapat menyematkan iframe pihak ketiga yang tidak menggunakan COEP.
Iframe tanpa kredensial diaktifkan secara default dari Chrome versi 110. Hal ini menyelesaikan keluhan paling umum yang dialami developer yang menggunakan Cross-Origin-Embedder-Policy (COEP): menyematkan iframe pihak ketiga yang tidak menetapkan 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 memerlukan deployment COEP. Isolasi lintas origin memungkinkan situs menggunakan fitur dengan hak istimewa, termasuk SharedArrayBuffer
, performance.measureUserAgentSpecificMemory()
, dan timer presisi tinggi dengan resolusi yang lebih baik.
Untuk mengaktifkan isolasi lintas-asal, situs harus mengirim header HTTP berikut:
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
COEP:credentialless juga dapat digunakan sebagai alternatif untuk require-corp
. Lihat dokumentasi untuk mengetahui detail selengkapnya.
Tantangan dalam mengaktifkan COEP
Meskipun isolasi lintas-asal memberikan keamanan yang lebih baik dan kemampuan untuk mengaktifkan fitur yang canggih pada halaman web, men-deploy COEP dapat sulit. Salah satu tantangan terbesar adalah semua iframe lintas origin harus men-deploy COEP dan CORP. Iframe tanpa header tersebut tidak akan dimuat oleh browser.
Iframe tanpa kredensial untuk menyelamatkan
Kami memperkenalkan <iframe credentialless>
untuk membantu menyematkan iframe pihak ketiga yang tidak menetapkan COEP. Dengan menambahkan atribut credentialless
ke elemen <iframe>
, iframe akan dimuat dari konteks kosong yang berbeda. Secara khusus, halaman ini dimuat tanpa cookie. Hal ini memungkinkan penghapusan batasan COEP.
Contoh:
<iframe credentialless src="https://example.com">
Iframe ini dibuat dalam konteks sementara baru dan tidak memiliki akses ke cookie apa pun yang terkait dengan situs tingkat teratas. Sebagai gantinya, proses ini dimulai dengan toples kue kosong. Demikian pula, API penyimpanan seperti LocalStorage, CacheStorage, IndexedDB, dan sebagainya, memuat dan menyimpan data di partisi sementara baru. Partisi dicakupkan ke dokumen tingkat teratas saat ini dan asal iframe. Semua penyimpanan ini akan dihapus setelah dokumen tingkat teratas di-unload.
Iframe tanpa kredensial tidak tunduk pada aturan penyematan COEP. Data tersebut tetap aman: karena dimuat dari konteks kosong baru setiap saat, data tersebut tidak boleh berisi data yang dipersonalisasi, yang menjadi sasaran penyerang. Jika hanya berisi data publik, iframe tidak akan bernilai bagi penyerang.
Demo
Anda dapat melihat demo iframe tanpa kredensial.
FAQ
Apakah fitur ini akan diadopsi oleh browser lain?
- Permintaan Mozilla untuk posisi: Tertunda
- Permintaan Webkit untuk posisi: Tidak ada sinyal
- TAG W3C Permintaan posisi: terpenuhi
Apakah <iframe>
bertingkat di dalam <iframe credentialless>
tanpa kredensial?
Ya. Ini diwariskan. Setelah iframe tidak memiliki kredensial, hal ini berlaku untuk semua iframe di seluruh sub-pohon meskipun tanpa atribut credentialless
.
Apakah pop-up yang dibuat dari <iframe credentialless>
juga tidak memiliki kredensial?
Pop-up dibuka seolah-olah noopener
telah ditetapkan. Akun tersebut dibuat dalam konteks tingkat teratas reguler baru dan tidak tanpa kredensial. Mereka tidak dapat berkomunikasi dengan iframe tanpa kredensial.
Bagaimana cara mendeteksi bahwa dokumen telah disematkan dalam iframe tanpa kredensial?
window.credentialless
bernilai benar di dalam iframe tanpa kredensial dan salah jika sebaliknya. Nilainya adalah undefined
di browser web yang tidak mendukung <iframe credentialless>
.
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
- IFrame tanpa kredensial - Keamanan web | MDN