Urządzenia w sieci lokalnej (LAN) są dostępne dla każdej aplikacji, która ma uprawnienie INTERNET
.
Ułatwia to aplikacjom łączenie się z urządzeniami lokalnymi, ale ma też wpływ na prywatność, np. umożliwia tworzenie odcisków palców użytkownika i działa jako serwer proxy lokalizacji.
Projekt Local Network Protections ma na celu ochronę prywatności użytkownika poprzez ograniczenie dostępu do sieci lokalnej za pomocą nowego uprawnienia środowiska wykonawczego.
Wpływ
W Androidzie 16 to uprawnienie będzie funkcją opcjonalną, co oznacza, że będzie dotyczyć tylko aplikacji, które ją włączą. Celem zgody użytkownika jest umożliwienie deweloperom aplikacji określenia, które części ich aplikacji zależą od niejawnego dostępu do lokalnej sieci, aby mogli przygotować się do ochrony tych części w przyszłej wersji Androida.
Aplikacje będą miały wpływ na dostęp do sieci lokalnej użytkownika, jeśli korzystają z tych funkcji:
- Bezpośrednie lub biblioteczne użycie gniazd surowych na adresach sieci lokalnej, np.
Multicast DNS (mDNS)
lubSimple Service Discovery Protocol (SSDP)
. - Używanie klas na poziomie platformy, które mają dostęp do sieci lokalnej, np.
NsdManager
.
Szczegóły wpływu
Ruch do i z adresu sieci lokalnej wymaga uprawnienia dostępu przez sieć lokalną. W tabeli poniżej znajdziesz kilka typowych przypadków:
Operacja sieciowa niskiego poziomu aplikacji | Wymagany jest dostęp do sieci lokalnej |
---|---|
Nawiązywanie wychodzącego połączenia TCP | tak |
Akceptowanie przychodzącego połączenia TCP | tak |
Wysyłanie transmisji pojedynczej, grupowej lub rozgłoszeniowej UDP | tak |
Odbieranie przychodzących pakietów UDP unicast, multicast i broadcast | tak |
Te ograniczenia są zaimplementowane głęboko w stosie sieciowym, dlatego dotyczą wszystkich interfejsów API sieci. Obejmuje to gniazda utworzone na platformie lub w kodzie zarządzanym, biblioteki sieciowe, takie jak Cronet i OkHttp, oraz wszystkie interfejsy API zaimplementowane na ich podstawie. Próba rozpoznania usług w sieci lokalnej, które mają sufiks .local
, wymaga uprawnień do sieci lokalnej.
Wyjątki od powyższych reguł:
- Jeśli serwer DNS urządzenia znajduje się w sieci lokalnej, ruch do niego i z niego (na porcie 53) nie wymaga uprawnień dostępu do sieci lokalnej.
- Aplikacje, które używają selektora wyjścia jako selektora w aplikacji, nie będą potrzebować uprawnień do sieci lokalnej (więcej informacji podamy w późniejszej wersji).
Wskazówki
Aby włączyć ograniczenia dotyczące sieci lokalnej:
- Wgraj na urządzenie kompilację z Androidem 16 w wersji beta 3 lub nowszej.
- Instalowanie aplikacji do testowania
Przełączanie konfiguracji Appcompat za pomocą adb
adb shell am compat enable RESTRICT_LOCAL_NETWORK <package_name>
Uruchom ponownie urządzenie
Dostęp aplikacji do sieci lokalnej jest teraz ograniczony, a każda próba uzyskania dostępu do sieci lokalnej spowoduje błędy gniazda.
Jeśli używasz interfejsów API, które wykonują operacje w sieci lokalnej poza procesem aplikacji, np. NsdManager
, nie ma to wpływu na proces wyrażania zgody.
Aby przywrócić dostęp, musisz przyznać aplikacji uprawnienia do NEARBY_WIFI_DEVICES
.
- Sprawdź, czy aplikacja deklaruje uprawnienie
NEARBY_WIFI_DEVICES
w plikumanifest
. - Otwórz Ustawienia > Aplikacje > [Nazwa aplikacji] > Uprawnienia > Urządzenia w pobliżu > Zezwól.
Dostęp aplikacji do sieci lokalnej powinien zostać przywrócony, a wszystkie scenariusze powinny działać tak jak przed włączeniem aplikacji. Oto jak wpłynie to na ruch w sieci aplikacji.
Uprawnienia | Żądanie wychodzące z sieci LAN | Żądanie internetowe wychodzące/przychodzące | Żądanie przychodzące z sieci LAN |
---|---|---|---|
Przyznano | Works | Works | Works |
Nie przyznano | Wpadki | Works | Wpadki |
Aby wyłączyć konfigurację Appcompat, użyj tego polecenia:
adb shell am compat disable RESTRICT_LOCAL_NETWORK <package_name>
Błędy
Błędy wynikające z tych ograniczeń będą zwracane do gniazda wywołującego, gdy wywoła ono funkcję send
lub jej wariant send
dla lokalnego adresu sieciowego.
Przykłady błędów:
sendto failed: EPERM (Operation not permitted)
sendto failed: ECONNABORTED (Operation not permitted)
Błędy
Przesyłanie błędów i opinii dotyczących:
- niezgodności w dostępie do sieci LAN (uważasz, że określony dostęp nie powinien być traktowany jako dostęp do „sieci lokalnej”);
- Błędy, w których dostęp do sieci LAN powinien być zablokowany, ale nie jest
- Błędy, w których dostęp do sieci LAN jest blokowany, mimo że nie powinien
Ta zmiana nie powinna mieć wpływu na:
- Dostęp do internetu
- Sieć komórkowa