Giá trị hộp cát mới allow-same-site-none-cookies từ Chrome 135

Natalia Markoborodova
Natalia Markoborodova

Kể từ Chrome 135, bạn có thể sử dụng giá trị sandbox mới: allow-same-site-none-cookies. Khi chính sách này được chỉ định và cookie của bên thứ ba không có sẵn, trình duyệt sẽ chỉ gửi cookie SameSite=None trong các yêu cầu HTTP bắt nguồn từ iframe được cách ly của bên thứ nhất.

iframe có thuộc tính hộp cát là gì?

iframe được cách ly là iframe có các quy định hạn chế đặc biệt. Chúng được coi là có nguồn gốc null, không minh bạch. Theo mặc định, các tính năng có khả năng gây hại như tập lệnh, biểu mẫu và cửa sổ bật lên sẽ không có trong iframe có thuộc tính hộp cát.

Sử dụng thuộc tính sandbox để chỉ định những tính năng mà iframe được cách ly nên có. Ví dụ:

 <iframe sandbox="allow-scripts" src="example-sandboxed-frame.html"/>

Việc tạo hộp cát luôn là một ý tưởng hay, vì nó cho phép bạn chọn chi tiết các quyền cần thiết để nội dung được nhúng tải thành công, đồng thời giới hạn phạm vi của các lỗ hổng bảo mật tiềm ẩn.

Tại sao chúng tôi cần chính sách mới này?

Trước khi allow-same-site-none-cookies ra mắt, bạn có thể định cấu hình 2 trường hợp sử dụng cookie trong iframe có thuộc tính hộp cát:

  • Nếu không có mã thông báo allow-same-origin trong thuộc tính sandbox, nguồn gốc của iframe sẽ được chuyển đổi tuần tự thành null, khiến tất cả các yêu cầu từ trang được cách ly đều là yêu cầu trên nhiều trang web. Trong trường hợp này, chỉ những cookie có SameSite=None mới được đưa vào các yêu cầu.
  • Với mã thông báo allow-same-origin trong thuộc tính sandbox, các yêu cầu được coi là bắt nguồn từ nguồn gốc thực của iframe, cho phép gửi cookie có bất kỳ giá trị SameSite nào.

Khi cookie của bên thứ ba bị chặn, iframe được cách ly không có allow-same-origin sẽ không thể gửi bất kỳ cookie nào, trừ phi bạn bật allow-same-site-none-cookies.

Một iframe có allow-same-origin vẫn có thể bao gồm cookie trong các yêu cầu cùng trang web, ngay cả khi cookie của bên thứ ba bị chặn. Tuy nhiên, toàn bộ cookie của nguồn gốc sẽ bị lộ ra cho hoạt động web có khả năng độc hại.

Với allow-same-site-none-cookies, iframe có thể gửi cookie SameSite=None trong các yêu cầu HTTP, trong khi cookie SameSite=StrictSameSite=Lax có khả năng nhạy cảm sẽ không được đưa vào.

Ví dụ thực tế

Hãy xem xét một trang web, practice-coding.example, cho phép người dùng tạo và chạy các dự án viết mã tuỳ chỉnh cũng như nhúng mã của người dùng khác. Để sử dụng dịch vụ này, người dùng phải đăng nhập, dẫn đến việc cookie phiên SameSite=Strict được đặt.

Một người dùng khác tạo dự án practice-coding.example/cookie-theft. Những người dùng khác có thể vô tình nhúng dự án này dưới dạng iframe vào dự án của họ. Nếu cookie SameSite=StrictSameSite=Lax được hiển thị cho iframe practice-coding.example/cookie-theft, thì người dùng độc hại có thể đánh cắp cookie phiên của những người dùng khác.

Trong trường hợp này, chủ sở hữu trang web có thể muốn hạn chế quyền truy cập vào các cookie có khả năng nhạy cảm. Tuy nhiên, họ vẫn có thể muốn cho phép cookie SameSite=None trong iframe được cách ly. Ví dụ: iframe được cách ly practice-coding.example/coding-interview có thể yêu cầu cookie SameSite=None để cho phép các ứng viên truy cập lại vào mã của họ. allow-same-site-none-cookies ngăn việc hiển thị toàn bộ cookie trong khi cho phép chọn lọc các cookie SameSite=None cần thiết.

Làm cách nào để chỉ cho phép SameSite=None trong các khung có thuộc tính hộp cát của bên thứ nhất?

Để bật cookie SameSite=None trong các yêu cầu từ các trang được cách ly của bên thứ nhất, hãy chỉ định mã thông báo allow-same-site-none-cookies trong thẻ iframe. Ví dụ:

 <iframe sandbox="allow-same-site-none-cookies" src="example-sandboxed-page.html"/>

Bạn cũng có thể đặt chính sách allow-same-site-none-cookies bằng Tiêu đề HTTP Content-Security-Policy:

Content-Security-Policy: sandbox allow-same-site-none-cookies;

Hãy tự mình trải nghiệm qua bản minh hoạ của chúng tôi.

Tương tác và chia sẻ ý kiến phản hồi

Gửi vấn đề để chia sẻ ý kiến phản hồi hoặc báo cáo vấn đề, hoặc tham gia thảo luận trên GitHub.