Akses Jaringan Pribadi: Perlindungan yang diperluas untuk pekerja web dan pengambilan navigasi

Jonathan Hao
Jonathan Hao

Apa itu Akses Jaringan Pribadi?

Private Network Access (PNA, sebelumnya dikenal sebagai CORS-RFC1918 dan singkatnya Local Network Access) adalah fitur keamanan yang membatasi kemampuan situs untuk mengirim permintaan ke server di jaringan pribadi. Tindakan ini membantu melindungi pengguna dan jaringan internal dari potensi serangan seperti Pemalsuan Permintaan Lintas Situs (CSRF). Chrome telah menerapkan PNA secara bertahap, dan perlindungan akan diperluas dalam rilis mendatang.

Perlindungan PNA utama (dengan statusnya saat ini)

  • Konteks Aman: Hanya konteks aman yang diizinkan untuk membuat permintaan subresource jaringan pribadi (diterapkan mulai Chrome 94). Lihat postingan pembaruan Akses Jaringan Pribadi untuk mengetahui detailnya.
  • Permintaan Preflight: Chrome mengirimkan permintaan preflight sebelum permintaan subresource jaringan pribadi untuk memeriksa izin server (peringatan di DevTools untuk kegagalan sejak Chrome 104, yang akan diterapkan di Chrome 130). Hal ini dijelaskan dalam Akses Jaringan Pribadi: Memperkenalkan preflight. Mulai Chrome 123, Chrome akan menghapus beberapa header CORS seperti Accept jika preflight hanya dibuat dan dikirim karena PNA.
  • Pengecualian Asal yang Sama: Mulai Chrome 115, permintaan dengan origin yang sama dari origin yang berpotensi tepercaya akan dikecualikan dari pembatasan PNA.

Perlindungan yang diperluas: Pekerja web

Perlindungan PNA juga akan berlaku untuk pekerja web (pekerja khusus, pekerja bersama, dan pekerja layanan). Hal ini mencakup:

  • Mengambil skrip pekerja: Memerlukan konteks dan preflight yang aman untuk alamat IP yang kurang publik. Peringatan sejak Chrome 110, akan diterapkan di Chrome 130.
  • Pengambilan yang dimulai oleh skrip pekerja: Semua pengambilan dari dalam skrip pekerja mengikuti aturan PNA yang sama.

Mulai Chrome 124, Anda dapat menguji penerapannya menggunakan langkah-langkah berikut:

  • Nonaktifkan chrome://flags/#private-network-access-ignore-worker-errors
  • Aktifkan chrome://flags/#private-network-access-respect-preflight-results

Perlindungan yang diperluas: Pengambilan navigasi

PNA juga berlaku untuk pengambilan navigasi (iframe, popup) karena potensi penggunaannya dalam serangan CSRF. Chrome 123 mulai menampilkan peringatan kegagalan, dengan penerapan yang direncanakan untuk Chrome 130.

Mulai Chrome 124, Anda dapat menguji penerapan dengan:

  • Nonaktifkan chrome://flags/#private-network-access-ignore-navigation-errors
  • Aktifkan chrome://flags/#private-network-access-respect-preflight-results

Jika PNA memblokir permintaan navigasi, pengguna akan melihat error tertentu dengan opsi untuk memuat ulang dan mengizinkan permintaan secara manual.

Jika PNA memblokir permintaan navigasi, pengguna akan melihat error tertentu dengan opsi untuk memuat ulang dan mengizinkan permintaan secara manual.
Saat PNA memblokir permintaan navigasi, pengguna akan melihat error tertentu dengan opsi untuk memuat ulang dan mengizinkan permintaan secara manual.

Apa yang harus dilakukan jika situs Anda terpengaruh?

Postingan Akses Jaringan Pribadi: memperkenalkan preflight menyertakan panduan. Yang penting, untuk permintaan navigasi:

  • Access-Control-Allow-Origin tidak boleh berupa karakter pengganti ("*").
  • Access-Control-Allow-Credentials harus ditetapkan ke "true".

Apa langkah selanjutnya?

  • WebSockets: PNA yang sementara akan mencakup handshake WebSockets (peringatan pertama) dimulai di Chrome 126.
  • Penegakan Penuh: Semua batasan PNA akan diterapkan (memblokir permintaan yang tidak mematuhi kebijakan) untuk sementara di Chrome 130. Pengguna akan memiliki setelan situs guna mengganti PNA untuk situs tepercaya.

Masukan untuk kasus penggunaan jaringan pribadi

Jika Anda menghosting situs di jaringan pribadi yang memerlukan permintaan dari jaringan publik, tim Chrome memerlukan masukan Anda. Laporkan masalah di Chromium Issue Tracker (komponen: Blink>SecurityFeature>CORS>PrivateNetworkAccess).

Foto oleh Jakub streamerdzicki di Unsplash