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à ngắn gọn 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 có thể xảy ra như Giả mạo yêu cầu trên nhiều trang web (CSRF). Chrome đang dần triển khai PNA và khả năng bảo vệ sẽ được mở rộng trong các bản phát hành sắp tới.

Khoá bảo vệ PNA (theo trạng thái hiện tại)

  • Ngữ cảnh bảo mật: Chỉ bối cảnh bảo mật mới được phép tạo yêu cầu về tài nguyên phụ cho mạng riêng (thực thi kể từ Chrome 94). Tham khảo bài đăng cập nhật về Quyền truy cập mạng riêng của chúng tôi để biết chi tiết.
  • Yêu cầu kiểm tra trước: Chrome gửi các yêu cầu kiểm tra trước các yêu cầu về tài nguyên phụ của mạng riêng để kiểm tra quyền máy chủ (cảnh báo trong Công cụ cho nhà phát triển đối với 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 các chuyến bay kiểm tra. Kể từ Chrome 123, Chrome sẽ bỏ qua một số tiêu đề CORS như Accept nếu quá trình kiểm tra 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ó cùng nguồn gốc từ những nguồn có thể đáng tin cậy sẽ được miễn tuân theo các quy định hạn chế của PNA.

Bảo vệ mở rộng: Trình thực thi web

Biện pháp bảo vệ của PNA sẽ mở rộng cho nhân viên web (nhân viên chuyên dụng, nhân viên dùng chung và nhân viên dịch vụ). Trong đó có:

  • Tìm nạp tập lệnh worker: Yêu cầu kiểm tra và ngữ cảnh bảo mật đối với 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.
  • Lượt tìm nạp do tập lệnh trình chạy khởi tạo: Tất cả các lượt tìm nạp trong tập lệnh trình chạy đều tuân theo cùng quy tắc PNA.

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

  • Vô hiệu hóa chrome://flags/#private-network-access-ignore-worker-errors
  • Bật chrome://flags/#private-network-access-respect-preflight-results

Bảo vệ mở rộng: Tìm nạp thành phần điều hướng

PNA cũng áp dụng cho các tìm nạp điều hướng (iframe, cửa sổ bật lên) do có thể sử dụng chú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 và đã lên kế hoạch thực thi cho Chrome 130.

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

  • Vô hiệu hóa 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 chỉ đườ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 theo cách thủ công và cho phép yêu cầu đó.

Khi PNA chặn một yêu cầu chỉ đườ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 theo cách thủ công và cho phép yêu cầu đó.
Khi PNA chặn một yêu cầu chỉ đườ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.

Cần làm gì 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 các chuyến bay trước có bao gồm 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 ("*").
  • Phải đặt Access-Control-Allow-Credentials thành "true".

Tiếp theo là gì?

  • WebSockets: Dự kiến kể từ Chrome 126, PNA sẽ áp dụng cho các hoạt động bắt tay WebSocket (cảnh báo trước).
  • Thực thi đầy đủ: Tạm thời, tất cả các quy định hạn chế của PNA sẽ được thực thi (chặn các yêu cầu không tuân thủ) 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.

Phản hồi về các trường hợp sử dụng mạng riêng

Nếu bạn lưu trữ một trang web trên một mạng riêng và cần các yêu cầu từ các mạng công cộng, thì nhóm Chrome rất mong 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 Rakutenerdzicki trên Unsplash