Keamanan aplikasi web semakin penting seiring berkembangnya website modern. Saat ini, sebuah aplikasi tidak hanya menjalankan kode yang dibuat oleh developer sendiri, tetapi juga sering terhubung dengan API, layanan pihak ketiga, library JavaScript, iframe, hingga kode yang dihasilkan oleh AI generatif.
Semakin banyak koneksi yang dimiliki sebuah website, semakin besar pula kebutuhan untuk mengontrol ke mana aplikasi tersebut boleh melakukan komunikasi jaringan. Jika sebuah script berbahaya atau kode yang tidak tepercaya berhasil dijalankan, terdapat risiko bahwa data dapat dikirim ke server yang tidak seharusnya.
Untuk menghadapi masalah tersebut, Chrome memperkenalkan Connection Allowlist pada Chrome 152. Fitur ini memungkinkan developer menentukan endpoint jaringan mana yang boleh digunakan oleh sebuah dokumen atau worker.
Dengan pendekatan ini, browser dapat bertindak sebagai lapisan pengamanan tambahan dengan prinsip deny by default. Artinya, koneksi yang tidak masuk dalam daftar yang diizinkan dapat diblokir oleh browser.
Apa Itu Connection Allowlist?
Connection Allowlist adalah mekanisme keamanan web yang memungkinkan developer menentukan tujuan jaringan yang diperbolehkan untuk diakses oleh aplikasi web.
Konfigurasinya dilakukan menggunakan HTTP response header:
Connection-Allowlist
Header tersebut berisi pola URL yang diperbolehkan. Sebelum koneksi jaringan dibuat, browser akan memeriksa tujuan koneksi tersebut terhadap daftar yang telah ditentukan.
Jika URL tujuan tidak cocok dengan pola yang diizinkan, koneksi dapat diblokir pada tingkat jaringan.
Mengapa Connection Allowlist Dibutuhkan?
Aplikasi web modern memiliki arsitektur yang semakin kompleks. Sebuah website dapat berkomunikasi dengan berbagai layanan seperti:
- REST API
- GraphQL API
- CDN
- Payment gateway
- Analytics
- Cloud storage
- Third-party API
- AI API
- Service worker
- Iframe pihak ketiga
Masalahnya, tidak semua kode yang berjalan di browser selalu berasal dari sumber yang sepenuhnya dapat dipercaya.
Website yang menggunakan third-party script, plugin, integrasi eksternal, atau kode yang dibuat secara dinamis memiliki permukaan serangan yang lebih luas.
Jika sebuah script yang tidak tepercaya berhasil memperoleh akses terhadap data tertentu, script tersebut berpotensi mencoba mengirim data ke server eksternal.
Connection Allowlist memberikan lapisan pembatas tambahan dengan menentukan secara eksplisit tujuan jaringan yang boleh digunakan.
Connection Allowlist dan Prinsip Deny by Default
Salah satu konsep penting dalam Connection Allowlist adalah deny by default.
Pada pendekatan ini, developer tidak perlu menganggap semua koneksi sebagai sesuatu yang otomatis diperbolehkan. Sebaliknya, developer menentukan terlebih dahulu endpoint yang memang diperlukan oleh aplikasi.
Misalnya, sebuah aplikasi hanya membutuhkan koneksi ke:
https://api.example.com/*
Maka endpoint tersebut dapat dimasukkan ke dalam allowlist.
Jika kode aplikasi kemudian mencoba melakukan komunikasi ke domain lain yang tidak terdapat dalam kebijakan, browser dapat memblokir koneksi tersebut.
Pendekatan ini membantu membangun batas jaringan yang lebih jelas antara aplikasi dan layanan eksternal.
Bagaimana Cara Kerja Connection Allowlist?
Secara sederhana, alurnya dapat digambarkan sebagai berikut:
- Browser membuka sebuah halaman web.
- Server mengirimkan HTTP response.
- Response tersebut memiliki header
Connection-Allowlist. - Browser membaca kebijakan tersebut.
- Aplikasi mencoba melakukan koneksi jaringan.
- Browser memeriksa tujuan koneksi terhadap allowlist.
- Jika sesuai, koneksi diperbolehkan.
- Jika tidak sesuai, koneksi dapat diblokir.
Dengan demikian, kontrol terhadap koneksi tidak hanya bergantung pada logika aplikasi.
Contoh Konfigurasi Connection-Allowlist
Konfigurasi dasar Connection Allowlist dapat menggunakan endpoint API tertentu dan token response-origin.
Connection-Allowlist: ("https://api.example.com/*" response-origin)
Konfigurasi tersebut memberikan izin kepada endpoint API yang ditentukan serta origin tempat response diberikan.
Perlu diperhatikan bahwa konfigurasi sebenarnya harus disesuaikan dengan arsitektur aplikasi. Developer sebaiknya tidak memasukkan domain secara sembarangan hanya agar aplikasi terlihat berfungsi.
Apa Itu response-origin?
response-origin merupakan token yang dapat digunakan untuk menambahkan origin tempat response berasal ke dalam daftar yang diizinkan.
Fitur ini berguna ketika aplikasi perlu berkomunikasi dengan origin-nya sendiri sekaligus dengan endpoint API tertentu.
Contohnya:
Connection-Allowlist: ("https://api.example.com/*" response-origin)
Dengan pola tersebut, developer dapat membuat kebijakan yang lebih praktis tanpa harus menuliskan origin aplikasi secara manual dalam setiap konfigurasi.
Connection Allowlist dan Redirect
Salah satu hal penting yang perlu diperhatikan adalah perilaku terhadap redirect.
Redirect diblokir secara default ketika Connection Allowlist diterapkan. Jika aplikasi memang membutuhkan redirect, developer perlu memberikan izin secara eksplisit.
Contoh konfigurasi:
Connection-Allowlist: ("https://api.example.com/*"); redirects=allow; webrtc=allow
Konfigurasi tersebut menunjukkan bahwa redirect dan WebRTC dapat diaktifkan secara eksplisit.
Karena setiap izin tambahan dapat memperluas permukaan komunikasi aplikasi, developer sebaiknya hanya mengaktifkan fitur yang benar-benar dibutuhkan.
Bagaimana dengan WebRTC?
WebRTC juga menjadi bagian yang perlu diperhatikan ketika menerapkan Connection Allowlist.
WebRTC digunakan oleh banyak aplikasi web untuk komunikasi real-time, seperti audio, video, dan koneksi peer-to-peer.
Jika aplikasi membutuhkan WebRTC, developer perlu memberikan izin secara eksplisit melalui konfigurasi yang sesuai.
Connection Allowlist Report-Only
Menerapkan kebijakan keamanan baru secara langsung dapat menimbulkan masalah jika developer belum mengetahui seluruh endpoint yang digunakan aplikasi.
Bayangkan sebuah website memiliki beberapa API yang tidak terdokumentasi dengan baik. Jika allowlist langsung diterapkan secara ketat, beberapa fitur website mungkin berhenti bekerja.
Untuk membantu proses pengujian, Chrome menyediakan mode Report-Only.
Contohnya:
Connection-Allowlist-Report-Only: ("https://trusted.com/*"); report-to=security-endpoint
Dalam mode ini, pelanggaran dapat dilaporkan tanpa langsung memblokir koneksi.
Developer juga perlu mengonfigurasi Reporting-Endpoints untuk menentukan endpoint yang menerima laporan tersebut.
Pendekatan ini sangat berguna ketika sebuah website sedang melakukan audit atau migrasi kebijakan keamanan.
Connection Allowlist untuk Aplikasi dengan AI Generatif
Salah satu penggunaan penting Connection Allowlist berkaitan dengan AI generatif.
AI semakin sering digunakan untuk menghasilkan kode, antarmuka, komponen aplikasi, dan berbagai elemen web secara dinamis.
Masalah keamanan muncul ketika aplikasi menjalankan kode yang tidak sepenuhnya dapat dipercaya.
Sebuah aplikasi dapat memiliki:
- AI-generated UI
- AI-generated JavaScript
- coding sandbox
- dynamic application components
- plugin atau script eksternal
Jika kode tersebut memiliki kemampuan untuk melakukan koneksi jaringan secara bebas, developer memiliki kontrol yang lebih terbatas terhadap tujuan komunikasi kode tersebut.
Connection Allowlist dapat digunakan sebagai lapisan pembatas sehingga komunikasi hanya diperbolehkan menuju endpoint yang telah ditentukan.
Connection Allowlist untuk Third-Party Script
Banyak website menggunakan script dari pihak ketiga untuk berbagai kebutuhan.
Contohnya:
- Analytics
- Chat widget
- Payment service
- Customer support
- Advertising
- Social media integration
- Mapping API
Integrasi tersebut dapat memberikan banyak manfaat, tetapi sekaligus menambah jumlah komponen eksternal yang berinteraksi dengan aplikasi.
Connection Allowlist dapat digunakan untuk membangun batas jaringan tambahan terhadap aplikasi yang menggunakan komponen pihak ketiga.
Jika terdapat kode pihak ketiga yang mengalami kompromi, kebijakan jaringan dapat membantu membatasi komunikasi menuju server yang tidak diotorisasi.
Connection Allowlist vs Content Security Policy
Connection Allowlist bukan berarti menggantikan Content Security Policy atau CSP.
Keduanya memiliki tujuan keamanan yang berbeda.
| Aspek | CSP | Connection Allowlist |
|---|---|---|
| Fokus | Kontrol resource dan eksekusi tertentu | Kontrol tujuan komunikasi jaringan |
| Konfigurasi | Berbasis directive CSP | Berbasis URL pattern |
| Tujuan | Mengurangi berbagai risiko content injection | Membatasi endpoint jaringan |
| Pendekatan | Resource-specific policy | Network boundary |
Connection Allowlist dapat digunakan sebagai lapisan tambahan di atas kebijakan keamanan web yang sudah diterapkan.
Connection Allowlist Bukan Pengganti Keamanan Website
Meskipun Connection Allowlist memberikan kontrol tambahan, fitur ini bukan berarti seluruh sistem keamanan website menjadi otomatis aman.
Developer tetap perlu menerapkan praktik keamanan lain seperti:
- Content Security Policy
- HTTPS
- Secure authentication
- Authorization
- Input validation
- Output encoding
- Secure cookie configuration
- Dependency management
- Server-side access control
- Monitoring dan logging
Connection Allowlist sebaiknya dipandang sebagai salah satu lapisan dalam strategi defense in depth.
Pentingnya Iframe untuk Kode yang Tidak Tepercaya
Chrome memberikan perhatian khusus terhadap isolasi kode yang tidak tepercaya.
Jika aplikasi menjalankan kode yang tidak sepenuhnya dipercaya, salah satu pendekatan yang dapat digunakan adalah menempatkan kode tersebut pada iframe khusus.
Connection Allowlist kemudian dapat diterapkan pada iframe tersebut.
Pendekatan ini penting terutama untuk aplikasi yang memiliki fitur seperti:
- Online code editor
- AI coding sandbox
- Plugin execution
- Custom HTML preview
- Dynamic component rendering
Bagaimana Cara Menguji Connection Allowlist?
Developer dapat menguji Connection Allowlist dengan menambahkan header tersebut pada response server.
Dalam lingkungan development, langkah sederhananya adalah:
- Konfigurasikan development server.
- Tambahkan HTTP response header
Connection-Allowlist. - Buka aplikasi menggunakan Chrome.
- Buka Chrome DevTools.
- Masuk ke tab Network.
- Periksa apakah terdapat request yang diblokir.
- Periksa tab Issues untuk informasi terkait konfigurasi.
- Perbaiki konfigurasi jika terdapat endpoint yang memang diperlukan tetapi belum masuk allowlist.
Contoh Skenario pada Website Modern
Misalnya sebuah aplikasi menggunakan frontend pada:
https://app.example.com
dan backend API pada:
https://api.example.com
Aplikasi tersebut juga memiliki beberapa script eksternal.
Developer dapat merancang kebijakan jaringan yang hanya mengizinkan endpoint yang memang dibutuhkan aplikasi.
Dengan demikian, apabila terdapat kode yang mencoba melakukan request ke:
https://unknown-example.com/data
dan domain tersebut tidak termasuk dalam allowlist, browser dapat menolak koneksi tersebut.
Model seperti ini memberikan batas yang lebih jelas terhadap komunikasi jaringan aplikasi.
Apakah Semua Website Harus Menggunakan Connection Allowlist?
Tidak semua website membutuhkan konfigurasi yang sama.
Connection Allowlist terutama menarik untuk aplikasi yang memiliki kebutuhan keamanan tinggi atau arsitektur yang dinamis.
Contohnya:
- Aplikasi enterprise
- Aplikasi yang memproses data sensitif
- Platform dengan third-party code
- AI-powered web application
- Coding sandbox
- Platform plugin
- Aplikasi dengan banyak API
Untuk website sederhana seperti company profile statis, kebutuhan implementasinya tentu berbeda dengan aplikasi web yang menjalankan kode dinamis dari berbagai sumber.
Dampak Connection Allowlist bagi Web Developer
Connection Allowlist menunjukkan bahwa keamanan aplikasi web semakin bergerak ke arah kontrol yang dilakukan langsung oleh browser.
Developer tidak hanya perlu memikirkan apakah sebuah request diperbolehkan oleh backend. Mereka juga perlu memahami bagaimana browser dapat membatasi komunikasi aplikasi pada tingkat jaringan.
Hal ini menjadi semakin relevan karena arsitektur web modern semakin terhubung dengan AI, third-party services, API, dan dynamic code.
Connection Allowlist dan Masa Depan Keamanan Web
Perkembangan AI membuat aplikasi web menjadi semakin dinamis. AI dapat membantu menghasilkan kode, membuat UI, mengotomatisasi pekerjaan, dan berinteraksi dengan berbagai layanan.
Namun, semakin besar kemampuan aplikasi, semakin penting pula mekanisme pembatasan yang dapat memastikan kode hanya melakukan tindakan yang memang diizinkan.
Connection Allowlist menjadi salah satu contoh bagaimana browser berkembang dari sekadar tempat menjalankan halaman web menjadi bagian aktif dari arsitektur keamanan aplikasi.
Konsep ini juga sejalan dengan pendekatan least privilege: sebuah komponen aplikasi sebaiknya hanya memperoleh akses yang memang diperlukan untuk menjalankan tugasnya.
Kesimpulan
Connection Allowlist merupakan fitur keamanan baru di Chrome 152 yang memungkinkan developer membatasi tujuan koneksi jaringan aplikasi web menggunakan HTTP response header.
Fitur ini menggunakan pola URL untuk menentukan endpoint yang diperbolehkan dan menerapkan pendekatan deny-by-default terhadap koneksi yang tidak masuk dalam kebijakan.
Connection Allowlist sangat relevan untuk aplikasi yang menggunakan kode dinamis, AI generatif, third-party script, iframe, sandbox, dan berbagai layanan eksternal.
Fitur ini tidak menggantikan CSP atau mekanisme keamanan lainnya. Sebaliknya, Connection Allowlist dapat digunakan sebagai lapisan tambahan untuk membangun batas jaringan yang lebih ketat.
Bagi developer, perkembangan ini menunjukkan bahwa keamanan web semakin membutuhkan pendekatan berlapis. Selain mengamankan backend dan frontend, developer juga perlu mempertimbangkan ke mana aplikasi dapat melakukan komunikasi jaringan.
Dengan semakin berkembangnya AI dan aplikasi web agentic, kontrol terhadap koneksi jaringan kemungkinan akan menjadi semakin penting dalam desain keamanan aplikasi web modern.