Perangkat di LAN dapat diakses oleh aplikasi apa pun yang memiliki izin
INTERNET
.
Hal ini memudahkan aplikasi untuk terhubung ke perangkat lokal, tetapi juga membawa
implikasi privasi seperti membentuk sidik jari pengguna dan menjadi
proxy untuk lokasi.
Project Perlindungan Jaringan Lokal bertujuan untuk melindungi privasi pengguna dengan mengontrol akses ke jaringan lokal di balik izin runtime baru.
Dampak
Selama Android 16, izin ini adalah fitur keikutsertaan yang berarti hanya aplikasi yang ikut serta yang akan terpengaruh. Tujuan keikutsertaan ini adalah agar developer aplikasi dapat memahami bagian aplikasi mana yang bergantung pada akses jaringan lokal implisit sehingga mereka dapat bersiap untuk melindunginya dengan izin pada rilis Android mendatang.
Aplikasi akan terpengaruh jika mengakses jaringan lokal pengguna menggunakan:
- Penggunaan langsung atau library soket mentah pada alamat jaringan lokal (misalnya, protokol penemuan layanan mDNS atau SSDP)
- Penggunaan class tingkat framework yang mengakses jaringan lokal (misalnya, NsdManager)
Detail Dampak
Traffic ke dan dari alamat jaringan lokal memerlukan izin akses jaringan lokal. Tabel berikut mencantumkan beberapa kasus umum:
Operasi Jaringan Tingkat Rendah Aplikasi | Izin Jaringan Lokal Diperlukan |
---|---|
Membuat koneksi TCP keluar | ya |
Menerima koneksi TCP masuk | ya |
Mengirim unicast, multicast, siaran UDP | ya |
Menerima unicast, multicast, siaran UDP masuk | ya |
Pembatasan ini diterapkan jauh di dalam stack jaringan, sehingga berlaku untuk semua API jaringan. Hal ini mencakup soket yang dibuat di platform atau kode terkelola, library jaringan seperti Cronet dan OkHttp, dan API apa pun yang diterapkan di atasnya. Mencoba me-resolve layanan di jaringan lokal (yaitu layanan dengan akhiran .local) akan memerlukan izin jaringan lokal.
Pengecualian untuk aturan sebelumnya:
- Jika server DNS perangkat berada di jaringan lokal, traffic ke / dari server tersebut (di port 53) tidak memerlukan izin akses jaringan lokal.
- Aplikasi yang menggunakan Output Switcher sebagai pemilih dalam aplikasi tidak akan memerlukan izin jaringan lokal (panduan selengkapnya akan tersedia pada rilis berikutnya).
Panduan
Untuk memilih ikut serta dalam pembatasan jaringan lokal, lakukan langkah berikut:
- Mem-flash perangkat ke build dengan Android 16 Beta 3 atau yang lebih baru
- Menginstal aplikasi yang akan diuji
Mengalihkan konfigurasi Appcompat menggunakan adb
adb shell am compat enable RESTRICT_LOCAL_NETWORK <package_name>
Memulai ulang perangkat
Sekarang akses aplikasi Anda ke jaringan lokal dibatasi dan setiap upaya untuk mengakses jaringan lokal akan menyebabkan error soket. Jika Anda menggunakan API yang melakukan operasi jaringan lokal di luar proses aplikasi (Misalnya: NsdManager), API tersebut tidak akan terpengaruh selama keikutsertaan.
Untuk memulihkan akses, Anda harus memberikan izin aplikasi ke NEARBY_WIFI_DEVICES
.
- Pastikan aplikasi mendeklarasikan izin
NEARBY_WIFI_DEVICES
dalam manifesnya. - Buka Setelan > Aplikasi > [Nama Aplikasi] > Izin > Perangkat di sekitar > Izinkan
Sekarang, akses aplikasi Anda ke jaringan lokal akan dipulihkan dan semua skenario akan berfungsi seperti sebelum mengaktifkan aplikasi. Berikut adalah dampak traffic jaringan aplikasi.
Izin | Permintaan LAN Keluar | Permintaan Internet Keluar/Masuk | Permintaan LAN Masuk |
---|---|---|---|
Diberikan | Works | Works | Works |
Tidak Diberikan | Gagal | Works | Gagal |
Gunakan perintah berikut untuk menonaktifkan konfigurasi Appcompat
adb shell am compat disable RESTRICT_LOCAL_NETWORK <package_name>
Error
Error yang timbul dari batasan ini akan ditampilkan ke soket panggilan
setiap kali memanggil send
atau varian send
ke alamat jaringan lokal.
Contoh error:
sendto failed: EPERM (Operation not permitted)
sendto failed: ECONNABORTED (Operation not permitted)
Bug
Kirim bug dan masukan untuk:
- Perbedaan dalam akses LAN (Anda tidak menganggap akses tertentu harus dianggap sebagai akses "jaringan lokal")
- Bug saat akses LAN seharusnya diblokir, tetapi tidak
- Bug saat akses LAN seharusnya tidak diblokir, tetapi diblokir
Hal-hal berikut tidak akan terpengaruh oleh perubahan ini:
- Akses ke Internet
- Jaringan Seluler