Dipublikasikan: 9 Juni 2025
Chrome menambahkan dialog izin baru untuk situs yang membuat koneksi ke jaringan lokal pengguna sebagai bagian dari spesifikasi Akses Jaringan Lokal. Tujuannya adalah untuk melindungi pengguna dari serangan pemalsuan permintaan lintas situs (CSRF) yang menargetkan router dan perangkat lain di jaringan pribadi, serta mengurangi kemampuan situs untuk menggunakan permintaan ini sebagai metode pelacakan sidik jari terhadap jaringan lokal pengguna.
Untuk memahami dampak perubahan ini terhadap ekosistem web, tim Chrome mencari masukan dari developer yang membuat aplikasi web yang mengandalkan pembuatan koneksi ke jaringan lokal pengguna atau ke software yang berjalan secara lokal di perangkat pengguna. Mulai Chrome 138, Anda dapat mengaktifkan batasan baru ini dengan
membuka chrome://flags/#local-network-access-check
dan menyetel tanda ke
"Diaktifkan (Memblokir)".
Apa yang dimaksud dengan Akses Jaringan Lokal?
Akses Jaringan Lokal membatasi kemampuan situs untuk mengirim permintaan ke server di jaringan lokal pengguna (termasuk server yang berjalan secara lokal di mesin pengguna), sehingga pengguna harus memberikan izin situs sebelum permintaan tersebut dapat dilakukan. Kemampuan untuk meminta izin ini dibatasi untuk konteks yang aman.
Banyak platform lain, seperti Android, iOS, dan MacOS memiliki izin akses jaringan lokal. Misalnya, Anda mungkin telah memberikan izin ini untuk mengakses jaringan lokal ke aplikasi Google Home saat menyiapkan perangkat Google TV dan Chromecast baru.
Jenis permintaan apa yang terpengaruh?
Untuk tonggak pencapaian pertama Akses Jaringan Lokal, kami menganggap "permintaan jaringan lokal" sebagai permintaan apa pun dari jaringan publik ke tujuan jaringan lokal atau loopback.
Jaringan lokal adalah tujuan apa pun yang di-resolve ke ruang alamat pribadi yang ditentukan dalam Bagian 3 RFC1918 di IPv4 (misalnya, 192.168.0.0/16
), alamat IPv6 yang dipetakan IPv4 dengan alamat IPv4 yang dipetakan itu sendiri bersifat pribadi, atau alamat IPv6 di luar subnet ::1/128
, 2000::/3
, dan ff00::/8
.
Loopback adalah tujuan apa pun yang di-resolve ke ruang "loopback"
(127.0.0.0/8
) yang ditentukan dalam bagian 3.2.1.3 dari
RFC1122 IPv4, ruang "link-local"
(169.254.0.0/16
) yang ditentukan dalam RFC3927 IPv4, awalan "Unique Local Address" (fcc00::/7
) yang ditentukan dalam Bagian 3
RFC4193 IPv6, atau awalan "link-local"
(fe80::/10
) yang ditentukan dalam bagian 2.5.6
RFC4291 IPv6.
Untuk pemetaan lengkap alamat IP ke ruang alamat, lihat tabel dalam spesifikasi Akses Jaringan Lokal.
Jaringan publik adalah tujuan lainnya.
Karena izin akses jaringan lokal dibatasi untuk konteks aman, dan perangkat jaringan lokal sulit dimigrasikan ke HTTPS, permintaan jaringan lokal yang dibatasi izin kini akan dikecualikan dari pemeriksaan konten campuran jika Chrome mengetahui bahwa permintaan akan ditujukan ke jaringan lokal sebelum menyelesaikan tujuan. Chrome mengetahui bahwa permintaan ditujukan ke jaringan lokal jika:
- Nama host permintaan adalah literal IP pribadi (misalnya,
192.168.0.1
). - Nama host permintaan adalah domain
.local
. - Panggilan
fetch()
dianotasi dengan opsitargetAddressSpace: "local".
// Example 1: Private IP literal is exempt from mixed content.
fetch("http://192.168.0.1/ping");
// Example 2: `.local` domain is exempt from mixed content.
fetch("http://router.local/ping");
// Example 3: Public domain is not exempt from mixed content,
// even if it resolves to a local network address.
fetch("http://example.com/ping");
// Example 4: Adding the `targetAddressSpace` option flags that
// the request will go to the local network, and is thus exempt
// from mixed content.
fetch("http://example.com/ping", {
targetAddressSpace: "local",
});
Yang berubah di Chrome
Chrome 138
Versi awal Akses Jaringan Lokal kami siap untuk pengujian keikutsertaan di Chrome 138. Pengguna dapat mengaktifkan dialog izin baru dengan menyetel
chrome://flags#local-network-access-check
ke "Diaktifkan (Memblokir)". Hal ini mendukung pemicuan dialog izin Akses Jaringan Lokal untuk permintaan yang dimulai menggunakan JavaScript fetch()
API, pemuatan subresource, dan navigasi subframe.
Situs demo tersedia di https://lna-testing.notyetsecure.com/ untuk memicu berbagai bentuk permintaan jaringan lokal.
Masalah umum dan batasan
- Koneksi WebSockets (crbug.com/421156866), WebTransport (crbug.com/421216834), dan WebRTC (crbug.com/421223919) ke jaringan lokal belum diizinkan dengan izin LNA.
- Permintaan jaringan lokal dari Service Worker dan Shared Worker mengharuskan origin pekerja telah diberi izin Akses Jaringan Lokal sebelumnya.
- Jika aplikasi Anda membuat permintaan jaringan lokal dari pekerja layanan, Anda harus memicu permintaan jaringan lokal secara terpisah dari aplikasi Anda untuk memicu dialog izin. (Kami sedang berupaya menyediakan cara bagi pekerja untuk memicu perintah izin jika ada dokumen aktif yang tersedia — lihat crbug.com/404887282.)
Chrome 139 dan yang lebih baru
Tujuan kami adalah meluncurkan Akses Jaringan Lokal sesegera mungkin. Menyadari bahwa beberapa situs mungkin memerlukan waktu tambahan untuk diperbarui dengan anotasi Akses Jaringan Lokal, kami akan menambahkan Uji Coba Origin untuk memungkinkan situs menonaktifkan sementara persyaratan konteks aman sebelum kami meluncurkan Akses Jaringan Lokal secara default. Hal ini akan memberikan jalur migrasi yang lebih jelas bagi developer, terutama jika Anda mengandalkan akses ke resource jaringan lokal melalui HTTP (karena permintaan ini akan diblokir sebagai konten campuran jika diminta dari halaman HTTPS di browser yang belum mendukung pengecualian konten campuran Akses Jaringan Lokal).
Kami juga akan menambahkan kebijakan Chrome untuk perusahaan guna mengontrol situs mana yang dapat dan tidak dapat membuat permintaan jaringan lokal (memberikan atau menolak izin sebelumnya ke situs tersebut). Hal ini akan memungkinkan penginstalan Chrome terkelola, seperti di setelan perusahaan, untuk menghindari menampilkan peringatan untuk kasus penggunaan yang dimaksudkan, atau untuk lebih mengunci dan mencegah situs meminta izin sama sekali.
Kami berencana untuk terus mengintegrasikan izin Akses Jaringan Lokal dengan berbagai fitur yang dapat mengirim permintaan ke jaringan lokal. Misalnya, kami berencana untuk segera meluncurkan Akses Jaringan Lokal untuk koneksi WebSockets, WebTransport, dan WebRTC.
Kami akan membagikan informasi selengkapnya menjelang peluncuran penuh Akses Jaringan Lokal di Chrome.
Kami menerima masukan
Masukan sebelumnya tentang pengembangan Akses Jaringan Pribadi sangat berharga dalam memandu kami menuju pendekatan izin Akses Jaringan Lokal yang baru. Kami ingin sekali lagi berterima kasih kepada semua orang yang telah terlibat selama bertahun-tahun.
Jika Anda adalah developer atau pengguna situs yang mengandalkan pembuatan koneksi ke jaringan lokal pengguna atau software yang berjalan secara lokal di komputer pengguna, tim Chrome tertarik dengan masukan dan kasus penggunaan Anda. Ada dua hal yang dapat Anda lakukan untuk membantu:
- Buka
chrome://flags#local-network-access-check
, setel tanda ke "Diaktifkan (Memblokir)", dan lihat apakah situs Anda memicu dialog izin baru dengan benar (dan berfungsi seperti yang diharapkan setelah Anda memberikan izin). - Jika Anda mengalami masalah atau memiliki masukan, ajukan masalah di Issue Tracker Chromium atau di repositori GitHub spesifikasi LNA kami. Chrome ingin mendengar pendapat Anda.