로컬 네트워크 (LAN)의 기기는 INTERNET
권한이 있는 모든 앱에서 액세스할 수 있습니다.
이렇게 하면 앱이 로컬 기기에 쉽게 연결할 수 있지만 사용자의 지문을 형성하고 위치의 프록시가 되는 등 개인 정보 보호 관련 영향도 있습니다.
로컬 네트워크 보호 프로젝트는 새로운 런타임 권한 뒤에 로컬 네트워크 액세스를 제한하여 사용자의 개인 정보를 보호하는 것을 목표로 합니다.
영향
Android 16에서 이 권한은 선택 기능이므로 선택한 앱만 영향을 받습니다. 선택의 목표는 앱 개발자가 앱의 어떤 부분이 암시적 로컬 네트워크 액세스에 의존하는지 이해하여 향후 Android 출시에서 권한으로 보호할 수 있도록 하는 것입니다.
다음 방법을 사용하여 사용자의 로컬 네트워크에 액세스하는 앱은 영향을 받습니다.
- 로컬 네트워크 주소(예:
Multicast DNS (mDNS)
또는Simple Service Discovery Protocol (SSDP)
)에서 원시 소켓을 직접 또는 라이브러리를 통해 사용 - 로컬 네트워크에 액세스하는 프레임워크 수준 클래스 사용(예:
NsdManager
)
영향 세부정보
로컬 네트워크 주소로 전송되거나 로컬 네트워크 주소에서 전송되는 트래픽에는 로컬 네트워크 액세스 권한이 필요합니다. 다음 표에는 몇 가지 일반적인 사례가 나와 있습니다.
앱 하위 수준 네트워크 작업 | 로컬 네트워크 권한 필요 |
---|---|
아웃바운드 TCP 연결 만들기 | 예 |
수신 TCP 연결 수락 | 예 |
UDP 유니캐스트, 멀티캐스트, 브로드캐스트 전송 | 예 |
수신 UDP 유니캐스트, 멀티캐스트, 브로드캐스트 수신 | 예 |
이러한 제한사항은 네트워킹 스택 깊숙이 구현되므로 모든 네트워킹 API에 적용됩니다. 여기에는 플랫폼이나 관리 코드에서 생성된 소켓, Cronet 및 OkHttp와 같은 네트워킹 라이브러리, 이러한 라이브러리 위에 구현된 API가 포함됩니다. .local
접미사가 있는 로컬 네트워크에서 서비스를 확인하려면 로컬 네트워크 권한이 필요합니다.
앞의 규칙에 대한 예외:
- 기기의 DNS 서버가 로컬 네트워크에 있는 경우 포트 53에서 오가는 트래픽에는 로컬 네트워크 액세스 권한이 필요하지 않습니다.
- 출력 전환기를 인앱 선택기로 사용하는 애플리케이션에는 로컬 네트워크 권한이 필요하지 않습니다 (자세한 안내는 추후 제공 예정).
가이드
로컬 네트워크 제한을 선택하려면 다음 단계를 따르세요.
- Android 16 베타 3 이상이 적용된 빌드로 기기 플래시
- 테스트할 앱 설치
adb를 사용하여 Appcompat 구성 전환
adb shell am compat enable RESTRICT_LOCAL_NETWORK <package_name>
기기 재부팅하기
이제 앱의 로컬 네트워크 액세스가 제한되며 로컬 네트워크에 액세스하려고 하면 소켓 오류가 발생합니다.
앱 프로세스 외부에서 로컬 네트워크 작업을 실행하는 API(예: NsdManager
)를 사용하는 경우 선택 기간 동안 영향을 받지 않습니다.
액세스 권한을 복원하려면 앱에 NEARBY_WIFI_DEVICES
권한을 부여해야 합니다.
- 앱이
manifest
에서NEARBY_WIFI_DEVICES
권한을 선언하는지 확인합니다. - 설정 > 앱 > [애플리케이션 이름] > 권한 > 주변 기기 > 허용으로 이동합니다.
이제 앱의 로컬 네트워크 액세스가 복원되고 모든 시나리오가 앱 선택 전과 같이 작동합니다. 앱 네트워크 트래픽에 미치는 영향은 다음과 같습니다.
권한 | 아웃바운드 LAN 요청 | 아웃바운드/인바운드 인터넷 요청 | 인바운드 LAN 요청 |
---|---|---|---|
승인됨 | 작동의 원리 | 작동의 원리 | 작동의 원리 |
허용되지 않음 | 실패 경험 | 작동의 원리 | 실패 경험 |
다음 명령어를 사용하여 Appcompat 구성을 전환합니다.
adb shell am compat disable RESTRICT_LOCAL_NETWORK <package_name>
오류
이러한 제한으로 인해 발생하는 오류는 로컬 네트워크 주소에 send
또는 send
변형을 호출할 때마다 호출 소켓에 반환됩니다.
오류 예시:
sendto failed: EPERM (Operation not permitted)
sendto failed: ECONNABORTED (Operation not permitted)
버그
다음에 대한 버그 및 의견 제출
- LAN 액세스 불일치 (특정 액세스가 '로컬 네트워크' 액세스로 간주되어서는 안 된다고 생각함)
- LAN 액세스가 차단되어야 하지만 차단되지 않는 버그
- LAN 액세스가 차단되지 않아야 하는데 차단되는 버그
다음은 이번 변경사항의 영향을 받지 않습니다.
- 인터넷 액세스
- 모바일 네트워크