Một chính sách liên kết giới thiệu mặc định mới dành cho Chrome –Strict-origin-when-cross-origin

Maud Nalpas
Maud Nalpas

Trước khi chúng ta bắt đầu:

  • Nếu bạn không chắc chắn về sự khác biệt giữa "site" và "origin", hãy tham khảo bài viết Tìm hiểu về "same-site" và "same-origin".
  • Tiêu đề Referer thiếu chữ R, do lỗi chính tả ban đầu trong thông số kỹ thuật. Tiêu đề Referrer-Policyreferrer trong JavaScript và DOM được viết đúng chính tả.

Tóm tắt

  • Các trình duyệt đang phát triển theo các chính sách liên kết giới thiệu mặc định nâng cao quyền riêng tư để cung cấp khả năng dự phòng hiệu quả khi trang web không thiết lập chính sách nào.
  • Chrome dự định từng bước bật strict-origin-when-cross-origin làm chính sách mặc định trong phiên bản 85. Điều này có thể ảnh hưởng đến các trường hợp sử dụng dựa vào giá trị đường liên kết giới thiệu từ một nguồn gốc khác.
  • Đây là chế độ mặc định mới, nhưng các trang web vẫn có thể chọn chính sách mà họ muốn.
  • Để thử thay đổi này trong Chrome, hãy bật cờ tại chrome://flags/#reduced-referrer-granularity. Bạn cũng có thể xem bản minh hoạ này để xem sự thay đổi trong thực tế.
  • Ngoài chính sách liên kết giới thiệu, cách trình duyệt xử lý đường liên kết giới thiệu có thể thay đổi. Vì vậy, hãy chú ý đến chính sách này.

Điều gì sẽ thay đổi và tại sao?

Các yêu cầu HTTP có thể bao gồm tiêu đề Referer (không bắt buộc) cho biết URL nguồn gốc hoặc URL của trang web mà yêu cầu được tạo ra. Tiêu đề Referer-Policy xác định dữ liệu nào được cung cấp trong tiêu đề Referer, cũng như cho thành phần điều hướng và iframe trong document.referrer của đích đến.

Thông tin chính xác nào được gửi trong tiêu đề Referer trong một yêu cầu từ trang web của bạn sẽ được xác định bằng tiêu đề Referrer-Policy mà bạn đã đặt.

Biểu đồ: Phương thức giới thiệu được gửi trong một yêu cầu.
Chính sách giới thiệu và chính sách giới thiệu.

Khi bạn không đặt chính sách nào, chế độ mặc định của trình duyệt sẽ được sử dụng. Các trang web thường tuân theo chế độ mặc định của trình duyệt.

Đối với các thao tác điều hướng và iframe, bạn cũng có thể truy cập dữ liệu có trong tiêu đề Referer thông qua JavaScript bằng document.referrer.

Cho đến gần đây, no-referrer-when-downgrade vẫn là một chính sách mặc định phổ biến trên các trình duyệt. Tuy nhiên, hiện nay nhiều trình duyệt đang trong giai đoạn chuyển sang các chế độ mặc định nâng cao quyền riêng tư hơn.

Chrome dự định chuyển chính sách mặc định từ no-referrer-when-downgrade sang strict-origin-when-cross-origin, kể từ phiên bản 85.

Điều này có nghĩa là nếu bạn không đặt chính sách nào cho trang web, thì Chrome sẽ sử dụng strict-origin-when-cross-origin theo mặc định. Xin lưu ý rằng bạn vẫn có thể đặt chính sách theo ý mình; thay đổi này sẽ chỉ có hiệu lực với các trang web chưa đặt chính sách.

Thay đổi này có ý nghĩa gì?

strict-origin-when-cross-origin mang lại nhiều quyền riêng tư hơn. Với chính sách này, chỉ nguồn gốc được gửi trong tiêu đề Referer của các yêu cầu nhiều nguồn gốc.

Điều này giúp ngăn chặn rò rỉ dữ liệu riêng tư có thể truy cập được từ các phần khác của URL đầy đủ, chẳng hạn như đường dẫn và chuỗi truy vấn.

Sơ đồ: Tham chiếu được gửi tuỳ thuộc vào chính sách, cho một yêu cầu trên nhiều nguồn gốc.
Người giới thiệu đã gửi (và document.referrer) cho yêu cầu nhiều nguồn gốc, tuỳ thuộc vào chính sách.

Ví dụ:

Yêu cầu nhiều nguồn gốc, được gửi từ https://site-one.example/stuff/detail?tag=red đến https://site-two.example/...:

  • Với no-referrer-when-downgrade: Tham chiếu: https://site-one.example/stuff/detail?tag=red.
  • Với strict-origin-when-cross-origin: Phương thức giới thiệu: https://site-one.example/.

Những phần nào được giữ nguyên?

  • Giống như no-referrer-when-downgrade, strict-origin-when-cross-origin bảo mật: không có đường liên kết giới thiệu nào (tiêu đề Refererdocument.referrer) xuất hiện khi yêu cầu được thực hiện từ nguồn gốc HTTPS (bảo mật) đến nguồn gốc HTTP (không an toàn). Theo cách này, nếu trang web của bạn sử dụng HTTPS (nếu không, hãy ưu tiên giao thức này), thì URL trang web sẽ không bị rò rỉ trong các yêu cầu không phải HTTPS vì bất kỳ ai trên mạng đều có thể thấy các yêu cầu này, nên sẽ khiến người dùng của bạn bị tấn công trung gian.
  • Trong cùng một nguồn gốc, giá trị tiêu đề Referer là URL đầy đủ.

Ví dụ: Yêu cầu cùng nguồn gốc, được gửi từ https://site-one.example/stuff/detail?tag=red đến https://site-one.example/...:

  • Với strict-origin-when-cross-origin: Tham chiếu: https://site-one.example/stuff/detail?tag=red

Tác động của việc này là gì?

Dựa trên các thảo luận với các trình duyệt khác và thử nghiệm riêng của Chrome chạy trong Chrome 84, sự cố hiển thị cho người dùng dự kiến sẽ bị hạn chế.

Hoạt động ghi nhật ký hoặc phân tích phía máy chủ dựa vào URL liên kết giới thiệu đầy đủ hiện có có thể bị ảnh hưởng bởi mức độ chi tiết giảm trong thông tin đó.

Việc bạn cần làm

Chrome dự định bắt đầu ra mắt chính sách mới đối với trường liên kết giới thiệu mặc định vào năm 85 (tháng 7/2020 đối với bản thử nghiệm, tháng 8/2020 đối với bản thử nghiệm chính thức). Xem trạng thái trong mục nhập trạng thái của Chrome.

Hiểu và phát hiện thay đổi

Để tìm hiểu những thay đổi mặc định mới trong thực tế, bạn có thể xem bản minh hoạ này.

Bạn cũng có thể sử dụng bản minh hoạ này để phát hiện chính sách nào được áp dụng trong phiên bản Chrome mà bạn đang chạy.

Thử nghiệm thay đổi và xác định xem thay đổi này có ảnh hưởng đến trang web của bạn hay không

Bạn có thể thử thay đổi kể từ Chrome 81: truy cập chrome://flags/#reduced-referrer-granularity trong Chrome và bật cờ. Khi cờ này được bật, tất cả các trang web không có chính sách sẽ sử dụng chế độ mặc định mới là strict-origin-when-cross-origin.

Ảnh chụp màn hình Chrome: cách bật cờ chrome://flags/#reduced-referrer-granularity.
Bật cờ.

Giờ đây, bạn có thể kiểm tra xem trang web và phần phụ trợ của mình hoạt động như thế nào.

Một cách khác để phát hiện tác động là kiểm tra xem cơ sở mã của trang web có sử dụng đường liên kết giới thiệu hay không – thông qua tiêu đề Referer của các yêu cầu đến trên máy chủ, hay từ document.referrer trong JavaScript.

Một số tính năng nhất định trên trang web của bạn có thể bị lỗi hoặc hoạt động theo cách khác nếu bạn đang sử dụng liên kết giới thiệu yêu cầu từ một nguồn gốc khác đến trang web của mình (cụ thể hơn là đường dẫn và/hoặc chuỗi truy vấn) VÀ nguồn này sử dụng chính sách liên kết giới thiệu mặc định của trình duyệt (nghĩa là nó không có chính sách nào được đặt).

Nếu điều này ảnh hưởng đến trang web của bạn, hãy cân nhắc các phương án thay thế

Nếu đang sử dụng đường liên kết giới thiệu để truy cập đường dẫn đầy đủ hoặc chuỗi truy vấn cho các yêu cầu gửi đến trang web của mình, bạn có một số lựa chọn sau:

  • Sử dụng các kỹ thuật và tiêu đề thay thế như OriginSec-fetch-Site để bảo vệ CSRF, ghi nhật ký và các trường hợp sử dụng khác. Hãy tham khảo bài viết Giới thiệu và chính sách giới thiệu: các phương pháp hay nhất về người giới thiệu.
  • Bạn có thể thống nhất với đối tác về một chính sách cụ thể nếu cần và đảm bảo tính minh bạch cho người dùng. Kiểm soát quyền truy cập – khi liên kết giới thiệu được các trang web sử dụng để cấp quyền truy cập cụ thể vào tài nguyên của trang web đó đến các nguồn gốc khác – có thể là trường hợp như vậy, mặc dù với sự thay đổi của Chrome, nguồn này vẫn sẽ được chia sẻ trong Tiêu đề Referer (và trong document.referrer).

Xin lưu ý rằng hầu hết các trình duyệt đều có xu hướng tương tự (hãy xem các chế độ mặc định của trình duyệt và quá trình phát triển của đường liên kết giới thiệu trong bài viết Giới thiệu và chính sách giới thiệu: các phương pháp hay nhất về trình duyệt).

Triển khai chính sách rõ ràng, nâng cao quyền riêng tư trên trang web của bạn

Referer nào sẽ được gửi trong các yêu cầu do trang web của bạn tạo ra, tức là bạn nên đặt chính sách nào cho trang web của mình?

Ngay cả khi Chrome thay đổi, bạn vẫn nên đặt chính sách rõ ràng và nâng cao quyền riêng tư như strict-origin-when-cross-origin hoặc nghiêm ngặt hơn ngay bây giờ.

Việc này giúp bảo vệ người dùng và giúp trang web của bạn hoạt động theo cách dễ dự đoán hơn trên các trình duyệt. Trong hầu hết trường hợp, chế độ này cho phép bạn kiểm soát – thay vì để trang web của bạn phụ thuộc vào các chế độ mặc định của trình duyệt.

Hãy xem bài viết Referrer và Referrer-Policy: các phương pháp hay nhất để biết thông tin chi tiết về cách đặt chính sách.

Giới thiệu về Chrome Enterprise

Chính sách doanh nghiệp của Chrome ForceLegacyDefaultReferrerPolicy được cung cấp cho những quản trị viên CNTT muốn buộc áp dụng chính sách liên kết giới thiệu mặc định trước đó của no-referrer-when-downgrade trong môi trường doanh nghiệp. Điều này giúp doanh nghiệp có thêm thời gian kiểm thử và cập nhật ứng dụng.

Chính sách này sẽ bị loại bỏ trong Chrome 88.

Gửi phản hồi

Bạn có muốn chia sẻ hay muốn báo cáo điều gì đó không? Chia sẻ ý kiến phản hồi về ý định giao hàng của Chrome hoặc đăng câu hỏi của bạn tại @maudnals.

Chúng tôi chân thành cảm ơn tất cả người đánh giá, đặc biệt là Kaustubha Govind, David Van Cleve, Mike West, Sam Dutton, Rowan Merewood, Jxck và Kayce Basques.

Tài nguyên