Digital Transformation
COOP (Cross-Origin-Opener-Policy)
TL;DR: Cross-Origin-Opener-Policy (COOP) adalah header HTTP yang memisahkan halaman web Anda dari halaman lain yang membukanya lewat
window.openatau iframe. Saat dipasang dengan nilaisame-origin, halaman dari domain berbeda tidak bisa lagi mengakses objekwindow.openerAnda. Header ini diperlukan untuk membuka fitur cross-origin isolation, prasyarat dari API performa tinggi sepertiSharedArrayBufferdanperformance.measureUserAgentSpecificMemory().
Apa itu COOP?
COOP adalah salah satu dari trio header keamanan modern bersama [CSP](/glosarium/csp-content-security-policy) dan Cross-Origin-Embedder-Policy. Tanpa COOP, halaman A yang dibuka dari halaman B (lewat window.open atau link target="_blank") berbagi browsing context group dengan B. Artinya, halaman B masih bisa memanggil window.opener.location untuk mendeteksi atau memanipulasi navigasi A. Kelas serangan ini dikenal sebagai tab-napping atau reverse tabnabbing.
Saat header Cross-Origin-Opener-Policy: same-origin dipasang, browser memutuskan tautan antar window. Halaman Anda mendapat browsing context group sendiri dan tidak terjangkau oleh skrip dari domain lain. Praktik ini juga membuka pintu cross-origin isolation, kondisi di mana browser memberi akses ke fitur memori dan timer presisi tinggi yang sebelumnya dimatikan karena risiko Spectre.
Tiga Nilai Utama
| Nilai | Perilaku |
|---|---|
unsafe-none | Default. Window bisa berinteraksi dengan halaman pembukanya. |
same-origin-allow-popups | Halaman terisolasi, tapi popup yang dibuka dari halaman ini tetap terhubung. |
same-origin | Isolasi penuh. Wajib untuk cross-origin isolation. |
Spesifikasi lengkap ada di dokumentasi web.dev tentang COOP/COEP. Untuk konteks header keamanan lain, lihat HSTS dan Permissions-Policy.
Kenapa Penting untuk Marketer dan Developer Indonesia?
Banyak situs analytics dan widget pihak ketiga (chat, retargeting pixel) bergantung pada window.opener. Memasang COOP terlalu agresif tanpa audit dependency bisa membuat fitur tracking patah. Saat saya mendampingi sebuah klien Atmo (LMS) memasang isolation untuk fitur kursus berbasis WebAssembly, kami harus melakukan staging selama tiga minggu untuk memastikan integrasi pembayaran dan analytics tidak terganggu. Pendekatan yang bekerja: mulai dengan Cross-Origin-Opener-Policy-Report-Only untuk memantau dampak, baru aktifkan mode enforce setelah laporan stabil. Praktik ini juga membantu mencapai skor Core Web Vitals yang lebih baik karena beberapa optimisasi rendering hanya berlaku di konteks terisolasi.
Pertanyaan Umum
Apakah COOP dibutuhkan website biasa?
Tidak wajib, tapi sangat dianjurkan untuk website yang memproses data sensitif atau menggunakan fitur browser modern seperti SharedArrayBuffer. Untuk landing page sederhana, dampaknya minimal.
Apakah COOP menggantikan rel="noopener"?
Tidak. rel="noopener" di tag link adalah pertahanan per-link. COOP adalah pertahanan tingkat dokumen yang berlaku untuk semua window yang berinteraksi dengan halaman Anda.
Istilah Terkait