Quyền truy cập mạng riêng: Bảo vệ mở rộng cho trình thực thi trên web và phương thức tìm nạp điều hướng

Jonathan Hao
Jonathan Hao

Quyền truy cập mạng riêng là gì?

Quyền truy cập mạng riêng (PNA, trước đây gọi là CORS-RFC1918 và gọi tắt là Quyền truy cập mạng cục bộ) là một tính năng bảo mật hạn chế khả năng của các trang web trong việc gửi yêu cầu đến máy chủ trên mạng riêng. Điều này giúp bảo vệ người dùng và mạng nội bộ khỏi các cuộc tấn công tiềm ẩn như Giả mạo yêu cầu trên nhiều trang web (CSRF). Chrome đang dần triển khai PNA và sẽ mở rộng biện pháp bảo vệ trong các bản phát hành sắp tới.

Các biện pháp bảo vệ chính đối với PNA (cùng trạng thái hiện tại)

  • Bối cảnh an toàn: Chỉ bối cảnh an toàn mới được phép gửi yêu cầu tài nguyên phụ trên mạng riêng (được thực thi kể từ Chrome 94). Hãy tham khảo bài đăng cập nhật về quyền truy cập mạng riêng tư để biết thông tin chi tiết.
  • Yêu cầu trước khi bay: Chrome gửi yêu cầu trước khi bay trước các yêu cầu tài nguyên phụ của mạng riêng tư để kiểm tra quyền máy chủ (cảnh báo trong DevTools về các lỗi kể từ Chrome 104, sẽ được thực thi trong Chrome 130). Điều này đã được mô tả trong bài viết Quyền truy cập mạng riêng: Giới thiệu về quy trình kiểm tra trước. Kể từ Chrome 123, Chrome sẽ bỏ qua một số tiêu đề CORS như Accept nếu quá trình kiểm tra trước chỉ được tạo và gửi do PNA.
  • Miễn trừ cùng nguồn gốc: Kể từ Chrome 115, các yêu cầu cùng nguồn gốc từ các nguồn gốc có thể đáng tin cậy sẽ được miễn trừ các quy định hạn chế về PNA.

Mở rộng phạm vi bảo vệ: Worker trên web

Tính năng bảo vệ PNA sẽ mở rộng sang trình chạy web (trình chạy chuyên dụng, trình chạy dùng chung và trình chạy dịch vụ). Nội dung như vậy bao gồm:

  • Tìm nạp tập lệnh worker: Yêu cầu ngữ cảnh bảo mật và chuyến bay trước cho các địa chỉ IP ít công khai hơn. Cảnh báo kể từ Chrome 110, sẽ được thực thi trong Chrome 130.
  • Các lượt tìm nạp do tập lệnh worker khởi tạo: Tất cả các lượt tìm nạp từ trong tập lệnh worker đều tuân theo cùng một quy tắc PNA.

Kể từ Chrome 124, bạn có thể kiểm thử việc thực thi bằng cách làm theo các bước sau:

  • Tắt chrome://flags/#private-network-access-ignore-worker-errors
  • Bật chrome://flags/#private-network-access-respect-preflight-results

Mở rộng phạm vi bảo vệ: Tìm nạp điều hướng

PNA cũng áp dụng cho các lệnh tìm nạp điều hướng (iframe, cửa sổ bật lên) do khả năng sử dụng trong các cuộc tấn công CSRF. Chrome 123 bắt đầu hiển thị cảnh báo về lỗi, dự kiến sẽ thực thi cho Chrome 130.

Kể từ Chrome 124, bạn có thể kiểm thử việc thực thi bằng cách:

  • Tắt chrome://flags/#private-network-access-ignore-navigation-errors
  • Bật chrome://flags/#private-network-access-respect-preflight-results

Khi PNA chặn một yêu cầu điều hướng, người dùng sẽ thấy một lỗi cụ thể kèm theo lựa chọn tải lại và cho phép yêu cầu theo cách thủ công.

Khi PNA chặn một yêu cầu điều hướng, người dùng sẽ thấy một lỗi cụ thể kèm theo lựa chọn tải lại và cho phép yêu cầu theo cách thủ công.
Khi PNA chặn một yêu cầu điều hướng, người dùng sẽ thấy một lỗi cụ thể với lựa chọn tải lại và cho phép yêu cầu theo cách thủ công.

Những việc cần làm nếu trang web của bạn bị ảnh hưởng

Bài đăng Quyền truy cập mạng riêng: giới thiệu tính năng kiểm tra trước có hướng dẫn. Quan trọng là đối với các yêu cầu điều hướng:

  • Access-Control-Allow-Origin không được là ký tự đại diện ("*").
  • Bạn phải đặt Access-Control-Allow-Credentials thành "true".

Tiếp theo là gì?

  • WebSockets: Dự kiến bắt đầu từ Chrome 126, PNA sẽ bao gồm các giao thức bắt tay WebSocket (cảnh báo trước).
  • Thực thi đầy đủ: Tất cả các quy định hạn chế về PNA sẽ được thực thi (chặn các yêu cầu không tuân thủ) theo dự kiến trong Chrome 130. Người dùng sẽ có chế độ cài đặt trang web để ghi đè PNA cho các trang web đáng tin cậy.

Ý kiến phản hồi về các trường hợp sử dụng mạng riêng tư

Nếu bạn lưu trữ một trang web trên mạng riêng tư cần yêu cầu từ mạng công cộng, nhóm Chrome muốn nhận được ý kiến phản hồi của bạn! Gửi vấn đề tại Công cụ theo dõi lỗi Chromium (thành phần: Blink>SecurityFeature>CORS>PrivateNetworkAccess).

Ảnh chụp của Jakub Żerdzicki trên Unsplash