Mọi ứng dụng có quyền INTERNET
đều có thể truy cập vào các thiết bị trên mạng LAN.
Điều này giúp ứng dụng dễ dàng kết nối với các thiết bị cục bộ, nhưng cũng có những tác động đến quyền riêng tư, chẳng hạn như tạo vân tay số của người dùng và là proxy cho vị trí.
Dự án Bảo vệ mạng cục bộ nhằm bảo vệ quyền riêng tư của người dùng bằng cách kiểm soát quyền truy cập vào mạng cục bộ thông qua một quyền mới trong thời gian chạy.
Tác động
Trên Android 16, quyền này là một tính năng không bắt buộc, nghĩa là chỉ những ứng dụng chọn sử dụng mới bị ảnh hưởng. Mục tiêu của việc chọn sử dụng là để nhà phát triển ứng dụng hiểu được những phần nào của ứng dụng phụ thuộc vào quyền truy cập mạng cục bộ ngầm ẩn để họ có thể chuẩn bị bảo vệ quyền cho các phần đó trong bản phát hành Android trong tương lai.
Ứng dụng sẽ bị ảnh hưởng nếu truy cập vào mạng cục bộ của người dùng bằng:
- Sử dụng trực tiếp hoặc sử dụng thư viện của ổ cắm thô trên địa chỉ mạng cục bộ (ví dụ: giao thức khám phá dịch vụ mDNS hoặc SSDP)
- Sử dụng các lớp cấp khung truy cập vào mạng cục bộ (ví dụ: NsdManager)
Thông tin chi tiết về tác động
Lưu lượng truy cập đến và đi từ địa chỉ mạng cục bộ cần có quyền truy cập mạng cục bộ. Bảng sau đây liệt kê một số trường hợp thường gặp:
Thao tác mạng cấp thấp của ứng dụng | Cần có quyền truy cập mạng cục bộ |
---|---|
Tạo kết nối TCP đi | có |
Chấp nhận kết nối TCP đến | có |
Gửi UDP unicast, multicast, broadcast | có |
Nhận thông báo truyền tin một địa chỉ, truyền tin nhiều địa chỉ, truyền tin đến tất cả các địa chỉ UDP | có |
Các quy định hạn chế này được triển khai sâu trong ngăn xếp mạng, do đó, các quy định này áp dụng cho tất cả API mạng. Điều này bao gồm các ổ cắm được tạo trong nền tảng hoặc mã được quản lý, các thư viện kết nối mạng như Cronet và OkHttp, cũng như mọi API được triển khai trên các thư viện đó. Việc cố gắng phân giải các dịch vụ trên mạng cục bộ (tức là các dịch vụ có hậu tố .local) sẽ yêu cầu quyền truy cập mạng cục bộ.
Các trường hợp ngoại lệ đối với các quy tắc trước đó:
- Nếu máy chủ DNS của thiết bị nằm trên mạng cục bộ, thì lưu lượng truy cập đến / từ máy chủ đó (tại cổng 53) không cần quyền truy cập mạng cục bộ.
- Các ứng dụng sử dụng Trình chuyển đổi đầu ra làm bộ chọn trong ứng dụng sẽ không cần quyền truy cập mạng cục bộ (hướng dẫn chi tiết hơn sẽ có trong bản phát hành sau).
Hướng dẫn
Để chọn sử dụng các quy định hạn chế về mạng cục bộ, hãy làm như sau:
- Cài đặt ROM thiết bị lên bản dựng Android 16 Beta 3 trở lên
- Cài đặt ứng dụng cần kiểm thử
Bật/tắt cấu hình Appcompat bằng cách sử dụng adb
adb shell am compat enable RESTRICT_LOCAL_NETWORK <package_name>
Khởi động lại thiết bị
Giờ đây, quyền truy cập của ứng dụng vào mạng cục bộ bị hạn chế và mọi nỗ lực truy cập vào mạng cục bộ sẽ dẫn đến lỗi ổ cắm. Nếu bạn đang sử dụng các API thực hiện các thao tác mạng cục bộ bên ngoài quy trình ứng dụng (ví dụ: NsdManager), thì các API đó sẽ không bị ảnh hưởng trong quá trình chọn sử dụng.
Để khôi phục quyền truy cập, bạn phải cấp cho ứng dụng quyền truy cập vào NEARBY_WIFI_DEVICES
.
- Đảm bảo ứng dụng khai báo quyền
NEARBY_WIFI_DEVICES
trong tệp kê khai. - Chuyển đến phần Cài đặt > Ứng dụng > [Tên ứng dụng] > Quyền > Thiết bị ở gần > Cho phép
Lúc này, quyền truy cập của ứng dụng vào mạng cục bộ sẽ được khôi phục và tất cả các trường hợp của bạn sẽ hoạt động như trước khi chọn ứng dụng. Sau đây là cách lưu lượng truy cập mạng của ứng dụng sẽ bị ảnh hưởng.
Quyền | Yêu cầu LAN đi | Yêu cầu Internet đi/đến | Yêu cầu LAN đến |
---|---|---|---|
Đã cấp | Works | Works | Works |
Không được cấp | Thất bại | Works | Thất bại |
Sử dụng lệnh sau để tắt cấu hình Appcompat
adb shell am compat disable RESTRICT_LOCAL_NETWORK <package_name>
Lỗi
Lỗi phát sinh từ các quy định hạn chế này sẽ được trả về ổ cắm gọi bất cứ khi nào ổ cắm gọi send
hoặc biến thể send
đến địa chỉ mạng cục bộ.
Ví dụ về lỗi:
sendto failed: EPERM (Operation not permitted)
sendto failed: ECONNABORTED (Operation not permitted)
Lỗi
Gửi lỗi và ý kiến phản hồi về:
- Sự khác biệt về quyền truy cập vào mạng LAN (bạn không cho rằng một quyền truy cập nhất định nên được coi là quyền truy cập "mạng cục bộ")
- Lỗi truy cập LAN bị chặn nhưng không bị chặn
- Lỗi trong đó quyền truy cập LAN không bị chặn nhưng lại bị chặn
Thay đổi này sẽ không ảnh hưởng đến những nội dung sau:
- Quyền truy cập Internet
- Mạng di động