Membedah keamanan microfrontend: isolasi global scope antar remote, Content-Security-Policy & perlindungan XSS, remote dari supply chain terpercaya, guardrails input props di host, dan error boundary global agar satu remote gagal tidak merusak halaman.

Microfrontend berarti menjalankan kode dari banyak tim, banyak bundle, dan (mungkin) banyak origin dalam satu halaman. Ini memperluas permukaan keamanan: satu remote yang jahat atau terganggu bisa berdampak ke seluruh aplikasi jika tidak diisolasi dengan benar.
Mengapa penting? Karena di arsitektur ini, "security boundary" tidak hanya di server — ia juga hidup di browser antara host dan remote. Episode ini membahas isolasi global scope, CSP, supply chain, guardrails input, dan strategi error handling.
Idealnya remote tidak boleh merusak window global (variabel global, listener global, style global). Jika remote lain bergantung padanya, satu remote yang "liar" bisa merusak yang lain.
Opsinya mulai dari disiplin kode hingga teknik isolasi:
Aturan emas: remote berinteraksi lewat kontrak (props masuk, event keluar), bukan mengakses internal host atau global. Ini menjaga isolasi sekaligus mempermudah penggantian remote.
Content-Security-Policy tetap berlaku — bahkan makin penting saat remote dimuat dari CDN. Secara umum:
Content-Security-Policy: default-src 'self';
script-src 'self' https://cdn.example.com;
style-src 'self' 'unsafe-inline'; ...Hanya izinkan origin yang tepercaya untuk script. Karena remote dari CDN, pastikan CDN Anda masuk whitelist script-src. Pertimbangkan juga SRI (Subresource Integrity) — browser memverifikasi hash chunk sebelum mengeksekusi:
<script src=".../CatalogApp.js" integrity="sha384-..." crossorigin="anonymous"></script>SRI melindungi dari chunk yang dirusak di CDN (supply chain).
Karena remote dimuat dari URL eksternal, origin remote harus tepercaya:
Warning
Memuat remote dari CDN pihak ketiga berarti Anda mengeksekusi kode pihak ketiga di halaman Anda. Perlakukan remote seperti dependency npm: pin versi, audit, dan jaga agar hanya origin/path tepercaya yang di-load.
Karena prop bisa datang dari sumber luar, host harus memvalidasi input yang masuk ke remote. Jangan meneruskan data mentah yang tidak dibersihkan — terapkan validation di batas antar remote.
Seperti episode 7, jangan membagikan token raw ke semua remote. Berikan remote hanya data yang dibutuhkan; auth API ditangani host/level gateway.
Gagal di satu remote tidak boleh menggagalkan seluruh halaman. Bungkus setiap remote dalam ErrorBoundary global di host:
<GlobalErrorBoundary fallback={<RemoteDown name="catalog" />}>
<CatalogApp />
</GlobalErrorBoundary>Dengan ini, remote yang error menampilkan fallback UI (bukan layar putih), dan bagian lain halaman tetap sehat. Ini menyinggung fallback (dengan episode 9) karena memang sangat penting demi ketahanan.
Pada episode 13 ini, kalian telah memahami isolasi & keamanan remote.
Inti yang harus dibawa pulang:
script-src + SRI untuk chunk CDN.Di episode 14 selanjutnya, kita akan membahas deployment & CDN multiple remote — model deploy terpisah, versioned manifests, blue-green swap, caching immutable, rollback, dan pipeline CI/CD per remote. Pastikan keamanan kalian terkunci!