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 bạn chỉ định chính sách này và không có cookie của bên thứ ba, 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 hộp cát của bên thứ nhất.

Iframe trong hộp cát là gì?

Iframe trong hộp cát là các iframe có các quy định hạn chế đặc biệt. Các lớp này được coi là có nguồn gốc null, mờ. Theo mặc định, các tính năng có thể gây hại như tập lệnh, biểu mẫu và cửa sổ bật lên sẽ không hoạt động 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 cần có của iframe trong hộp cát. Ví dụ:

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

Bạn nên sử dụng hộp cát vì tính năng này 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 hành vi khai thác 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 hai trường hợp cookie trong một 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, thì nguồn gốc của iframe sẽ được sê-ri hoá dưới dạng null, khiến tất cả các yêu cầu từ trang hộp cát đều được thực hiện 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 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, một iframe trong hộp cát thiếu 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ể đưa cookie vào các yêu cầu trên cùng một trang web, ngay cả khi cookie của bên thứ ba bị chặn. Tuy nhiên, toàn bộ hộp cookie của nguồn gốc sẽ bị lộ trước hoạt động web có khả năng độc hại.

Với allow-same-site-none-cookies, một iframe có thể gửi cookie SameSite=None trong các yêu cầu HTTP, trong khi cookie SameSite=StrictSameSite=Lax có thể 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 lập trình tuỳ chỉnh cũng như nhúng mã của người dùng khác. Để sử dụng dịch vụ, người dùng phải đăng nhập, dẫn đến việc đặt cookie phiên SameSite=Strict.

Một người dùng khác tạo một dự án, practice-coding.example/cookie-theft, mà người dùng khác có thể vô tình nhúng dưới dạng iframe trong dự án của họ. Nếu cookie SameSite=StrictSameSite=Lax bị hiển thị với iframe practice-coding.example/cookie-theft, thì người dùng độc hại có thể đánh cắp cookie phiên của 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ó thể nhạy cảm. Tuy nhiên, họ vẫn có thể muốn cho phép cookie SameSite=None trong các iframe trong hộp cát. Ví dụ: khung hiển thị được đặt trong hộp cát practice-coding.example/coding-interview có thể yêu cầu cookie SameSite=None để cho phép ứng viên xem lại mã của họ. allow-same-site-none-cookies ngăn việc hiển thị toàn bộ hộp 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 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 hộp cát 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 dùng thử với bản minh hoạ của chúng tôi.

Tham gia 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 cuộc thảo luận trên GitHub.