Lời nhắc cấp quyền mới cho quyền Truy cập mạng cục bộ

Chris Thompson
Chris Thompson

Xuất bản: Ngày 9 tháng 6 năm 2025

Chrome đang thêm một lời nhắc cấp quyền mới cho những trang web kết nối với mạng cục bộ của người dùng trong quy cách Local Network Access (Quyền truy cập vào mạng cục bộ). Mục đích là để bảo vệ người dùng khỏi các cuộc tấn công giả mạo yêu cầu trên nhiều trang web (CSRF) nhắm vào bộ định tuyến và các thiết bị khác trên mạng riêng tư, đồng thời giảm khả năng các trang web sử dụng những yêu cầu này để nhận dạng mạng cục bộ của người dùng.

Để hiểu rõ tác động của thay đổi này đối với hệ sinh thái web, nhóm Chrome đang tìm kiếm ý kiến phản hồi từ những nhà phát triển xây dựng các ứng dụng web dựa vào việc kết nối với mạng cục bộ của người dùng hoặc với phần mềm chạy cục bộ trên máy của người dùng. Kể từ Chrome 138, bạn có thể chọn áp dụng những hạn chế mới này bằng cách chuyển đến chrome://flags/#local-network-access-check rồi đặt cờ thành "Đã bật (Chặn)".

Quyền truy cập mạng cục bộ là gì?

Quyền truy cập mạng cục bộ hạn chế khả năng các trang web gửi yêu cầu đến máy chủ trên mạng cục bộ của người dùng (bao gồm cả máy chủ chạy cục bộ trên máy của người dùng), yêu cầu người dùng cấp quyền cho trang web trước khi có thể gửi các yêu cầu đó. Chỉ những ngữ cảnh bảo mật mới có thể yêu cầu quyền này.

Một lời nhắc có nội dung "Tìm và kết nối với thiết bị bất kỳ trên mạng cục bộ của bạn".
Ví dụ về lời nhắc cấp quyền truy cập vào mạng cục bộ của Chrome.

Nhiều nền tảng khác, chẳng hạn như Android, iOSMacOS có quyền truy cập vào mạng cục bộ. Ví dụ: bạn có thể đã cấp quyền này cho ứng dụng Google Home để truy cập vào mạng cục bộ khi thiết lập thiết bị Google TV và Chromecast mới.

Những loại yêu cầu nào bị ảnh hưởng?

Đối với cột mốc đầu tiên của Quyền truy cập mạng cục bộ, chúng tôi coi "yêu cầu mạng cục bộ" là mọi yêu cầu từ mạng công cộng đến mạng cục bộ hoặc đích đến vòng lặp.

Mạng cục bộ là mọi đích đến phân giải thành không gian địa chỉ riêng tư được xác định trong Mục 3 của RFC1918 trong IPv4 (ví dụ: 192.168.0.0/16), một địa chỉ IPv6 được liên kết với IPv4, trong đó địa chỉ IPv4 được liên kết là địa chỉ riêng tư hoặc địa chỉ IPv6 bên ngoài các mạng con ::1/128, 2000::/3ff00::/8.

Loopback là mọi đích đến phân giải thành không gian "loopback" (127.0.0.0/8) được xác định trong phần 3.2.1.3 của RFC1122 của IPv4, không gian "link-local" (169.254.0.0/16) được xác định trong RFC3927 của IPv4, tiền tố "Unique Local Address" (fcc00::/7) được xác định trong Phần 3 của RFC4193 của IPv6 hoặc tiền tố "link-local" (fe80::/10) được xác định trong phần 2.5.6 của RFC4291 của IPv6.

Để xem toàn bộ thông tin liên kết địa chỉ IP với không gian địa chỉ, hãy xem bảng trong quy cách Quyền truy cập mạng cục bộ.

Mạng công cộng là mọi đích đến khác.

Vì quyền truy cập mạng cục bộ chỉ được cấp cho các bối cảnh an toàn và có thể khó di chuyển các thiết bị trên mạng cục bộ sang HTTPS, nên các yêu cầu mạng cục bộ có cổng cấp quyền sẽ được miễn kiểm tra nội dung hỗn hợp nếu Chrome biết rằng các yêu cầu sẽ được gửi đến mạng cục bộ trước khi phân giải đích đến. Chrome biết rằng một yêu cầu đang được gửi đến mạng cục bộ nếu:

  • Tên máy chủ yêu cầu là một địa chỉ IP riêng tư (ví dụ: 192.168.0.1).
  • Tên máy chủ yêu cầu là một miền .local.
  • Lệnh gọi fetch() được chú thích bằng lựa chọn targetAddressSpace: "local".
// Example 1: Private IP literal is exempt from mixed content.
fetch("http://192.168.0.1/ping");

// Example 2: `.local` domain is exempt from mixed content.
fetch("http://router.local/ping");

// Example 3: Public domain is not exempt from mixed content,
// even if it resolves to a local network address.
fetch("http://example.com/ping");

// Example 4: Adding the `targetAddressSpace` option flags that
// the request will go to the local network, and is thus exempt
// from mixed content.
fetch("http://example.com/ping", {
  targetAddressSpace: "local",
});

Những thay đổi trong Chrome

Chrome 138

Phiên bản đầu tiên của Local Network Access đã sẵn sàng để kiểm thử chọn tham gia trong Chrome 138. Người dùng có thể bật lời nhắc cấp quyền mới bằng cách đặt chrome://flags#local-network-access-check thành "Đã bật (Chặn)". Tính năng này hỗ trợ kích hoạt lời nhắc về quyền truy cập vào mạng cục bộ cho các yêu cầu được bắt đầu bằng API fetch() JavaScript, hoạt động tải tài nguyên phụ và hoạt động điều hướng khung phụ.

Bạn có thể truy cập vào trang web minh hoạ tại https://lna-testing.notyetsecure.com/ để kích hoạt các dạng yêu cầu khác nhau trên mạng cục bộ.

Các vấn đề và hạn chế đã biết

  • Các kết nối WebSockets (crbug.com/421156866), WebTransport (crbug.com/421216834) và WebRTC (crbug.com/421223919) đến mạng cục bộ chưa được kiểm soát bằng quyền LNA.
  • Các yêu cầu mạng cục bộ từ Service Worker và Shared Worker yêu cầu nguồn gốc của worker trước đó đã được cấp quyền truy cập mạng cục bộ.
    • Nếu ứng dụng của bạn đưa ra các yêu cầu mạng cục bộ từ một worker dịch vụ, bạn sẽ cần kích hoạt riêng một yêu cầu mạng cục bộ từ ứng dụng để kích hoạt lời nhắc cấp quyền. (Chúng tôi đang tìm cách để các worker kích hoạt lời nhắc cấp quyền nếu có tài liệu đang hoạt động – xem crbug.com/404887282.)

Chrome 139 trở lên

Chúng tôi dự định cung cấp Quyền truy cập mạng cục bộ trong thời gian sớm nhất có thể. Nhận thấy rằng một số trang web có thể cần thêm thời gian để cập nhật bằng chú thích Quyền truy cập mạng cục bộ, chúng tôi sẽ thêm một Thử nghiệm nguồn gốc để cho phép các trang web tạm thời chọn không sử dụng yêu cầu về bối cảnh an toàn trước khi chúng tôi cung cấp Quyền truy cập mạng cục bộ theo mặc định. Điều này sẽ cung cấp một lộ trình di chuyển rõ ràng hơn cho nhà phát triển, đặc biệt là nếu bạn dựa vào việc truy cập vào các tài nguyên mạng cục bộ qua HTTP (vì các yêu cầu này sẽ bị chặn dưới dạng nội dung hỗn hợp nếu được yêu cầu từ một trang HTTPS trong những trình duyệt chưa hỗ trợ ngoại lệ nội dung hỗn hợp cho Quyền truy cập mạng cục bộ).

Chúng tôi cũng sẽ thêm một chính sách doanh nghiệp của Chrome để kiểm soát những trang web có thể và không thể đưa ra yêu cầu về mạng cục bộ (cấp trước hoặc từ chối trước quyền cho những trang web đó). Điều này sẽ cho phép các bản cài đặt Chrome được quản lý (chẳng hạn như các bản cài đặt trong môi trường doanh nghiệp) tránh hiển thị cảnh báo cho các trường hợp sử dụng đã biết, hoặc khoá chặt hơn nữa và ngăn các trang web yêu cầu quyền hoàn toàn.

Chúng tôi dự định tiếp tục tích hợp quyền truy cập mạng cục bộ với nhiều tính năng có thể gửi yêu cầu đến mạng cục bộ. Ví dụ: chúng tôi dự định sẽ sớm phát hành Quyền truy cập vào mạng cục bộ cho các kết nối WebSockets, WebTransport và WebRTC.

Chúng tôi sẽ chia sẻ thêm thông tin khi gần đến thời điểm có thể ra mắt hoàn toàn tính năng Truy cập vào mạng cục bộ trong Chrome.

Chúng tôi mong nhận được ý kiến phản hồi của bạn

Phản hồi trước đây về việc phát triển Quyền truy cập vào mạng riêng là vô cùng quý giá trong việc hướng dẫn chúng tôi đến với phương pháp cấp quyền truy cập vào mạng cục bộ mới. Một lần nữa, chúng tôi xin cảm ơn tất cả những người đã tham gia trong nhiều năm qua.

Nếu bạn phát triển hoặc là người dùng của một trang web dựa vào việc kết nối với mạng cục bộ của người dùng hoặc phần mềm chạy cục bộ trên máy của người dùng, thì nhóm Chrome rất mong nhận được ý kiến phản hồi và các trường hợp sử dụng của bạn. Có hai việc bạn có thể làm để giúp đỡ:

  • Chuyển đến chrome://flags#local-network-access-check, đặt cờ thành "Đã bật (Chặn)" và xem liệu trang web của bạn có kích hoạt đúng lời nhắc cấp quyền mới hay không (và hoạt động như mong đợi sau khi bạn cấp quyền).
  • Nếu bạn gặp vấn đề hoặc có ý kiến phản hồi, hãy báo cáo vấn đề tại Chromium Issue Tracker hoặc trên kho lưu trữ GitHub về quy cách LNA của chúng tôi. Chrome rất mong nhận được ý kiến của bạn.