Developer yang menggunakan COEP kini dapat menyematkan iframe pihak ketiga yang tidak menggunakan COEP sendiri.
Iframe tanpa kredensial diaktifkan secara default dari Chrome versi 110. Solusi ini mengatasi keluhan paling umum yang dialami developer yang bekerja dengan Cross-Origin-Embedder-Policy (COEP): menyematkan iframe pihak ketiga yang tidak menetapkan COEP.
Alasan kami 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 asal, yang memerlukan deployment COEP. Isolasi lintas asal memungkinkan situs menggunakan fitur dengan hak istimewa termasuk SharedArrayBuffer
, performance.measureUserAgentSpecificMemory()
, dan penghitung waktu 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 require-corp
. Lihat dokumentasi untuk mengetahui detail lebih lanjut.
Tantangan dalam mengaktifkan COEP
Meskipun isolasi lintas asal memberikan keamanan yang lebih baik pada halaman web dan kemampuan untuk mengaktifkan fitur canggih, deployment COEP bisa jadi sulit. Salah satu tantangan terbesar adalah semua iframe lintas origin harus menerapkan COEP dan CORP. Iframe tanpa header tersebut tidak akan dimuat oleh browser.
Iframe tanpa kredensial dapat membantu
Kami ingin memperkenalkan <iframe credentialless>
untuk membantu menyematkan iframe pihak ketiga yang tidak menetapkan COEP. Dengan menambahkan atribut credentialless
ke elemen <iframe>
, iframe dimuat dari konteks kosong yang berbeda. Secara khusus, file ini dimuat tanpa cookie. Tindakan ini memungkinkan penghapusan pembatasan COEP.
Contoh:
<iframe credentialless src="https://example.com">
iframe ini dibuat dalam konteks singkat baru dan tidak memiliki akses ke cookie apa pun yang terkait dengan situs tingkat atas. Sebagai gantinya, itu diawali dengan stoples kue kosong. Demikian juga, API penyimpanan seperti LocalStorage, CacheStorage, IndexedDB, dan seterusnya, memuat dan menyimpan data di partisi efemeral yang baru. Partisi ini mencakup dokumen tingkat teratas saat ini dan asal iframe. Semua penyimpanan ini akan dihapus setelah dokumen tingkat atas dihapus muatannya.
iframe tanpa kredensial tidak tunduk pada aturan penyematan COEP. Cookie ini masih aman: karena setiap saat dimuat dari konteks kosong baru, link tidak boleh berisi data yang dipersonalisasi, yang dicari oleh penyerang. Jika iframe hanya berisi data publik, iframe tidak akan berharga bagi penyerang.
Demo
Anda dapat melihat demo iframe tanpa kredensial.
FAQ
Apakah fitur ini akan digunakan oleh browser lain?
- Permintaan Mozilla untuk posisi: Pending
- Permintaan Webkit untuk posisi: Tidak ada sinyal
- W3C TAG Permintaan posisi: terpenuhi
Apakah <iframe>
yang disusun bertingkat di dalam <iframe credentialless>
tidak memiliki kredensial?
Ya. Turunan. Jika iframe tidak memiliki kredensial, iframe tersebut akan berlaku untuk semua iframe di seluruh subhierarki meskipun tanpa atribut credentialless
.
Apakah pop-up yang dibuat dari <iframe credentialless>
juga tidak memiliki kredensial?
Pop-up akan dibuka seolah-olah noopener
disetel. Container dibuat dalam konteks tingkat atas reguler yang baru dan tidak bersifat tanpa kredensial. Komponen tersebut tidak dapat berkomunikasi dengan iframe tanpa kredensial.
Bagaimana cara mendeteksi dokumen yang telah disematkan dalam iframe tanpa kredensial?
window.credentialless
bernilai benar di dalam iframe tanpa kredensial dan salah (false) jika tidak. Nilainya adalah undefined
di browser web yang tidak mendukung <iframe credentialless>
.
Resource
- Membuat situs Anda "diisolasi lintas origin" menggunakan COOP dan COEP
- Mengapa 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
- IFrame tanpa kredensial - Keamanan web | MDN