Hướng dẫn kiểm thử Nhóm bên thứ nhất

Phiên bản mới nhất của Nhóm bên thứ nhất đã sẵn sàng cho hoạt động kiểm thử cờ tính năng dành cho nhà phát triển trên Chrome 108. Chúng tôi đang tích cực xây dựng Nhóm bên thứ nhất nhằm tiến tới việc vận chuyển. Vì vậy, chúng tôi sẽ xem xét ý kiến phản hồi cho giai đoạn thử nghiệm này của nhà phát triển cho đến khi phát hành Chrome 111 vào đầu tháng 3 (ngày 7 tháng 3 năm 2023).

Ý kiến phản hồi về hệ sinh thái đã nêu bật các trường hợp sử dụng trên nhiều trang web sẽ bị ảnh hưởng khi cookie của bên thứ ba không còn được hỗ trợ trong Chrome. Đề xuất về Nhóm bên thứ nhất kiểm tra và giải quyết một loại trường hợp sử dụng trên nhiều trang web, trong đó các trang web phụ thuộc lẫn nhau chia sẻ mối quan hệ có thể được thể hiện với trình duyệt để trình duyệt có thể thực hiện hành động thích hợp thay mặt cho người dùng và/hoặc cung cấp thông tin đó cho người dùng một cách hiệu quả.

Đề xuất mới cập nhật này sử dụng 2 API (API Truy cập bộ nhớ và một API mới (tạm thời đặt tên là requestStorageAccessForOrigin)) để cung cấp cho các trang web phương thức đang hoạt động để yêu cầu quyền truy cập trên nhiều trang web đối với cookie của các trang web đó trong Nhóm bên thứ nhất. Các hướng dẫn dưới đây sẽ cho phép bạn thử nghiệm và xác thực những nhóm mà bạn có thể muốn tạo cho trang web của mình và các điểm phù hợp để gọi hai API khác nhau.

Tổng quan về Nhóm bên thứ nhất

Nhóm bên thứ nhất (FPS) là một cơ chế nền tảng web cho phép nhà phát triển khai báo mối quan hệ giữa các trang web, nhờ đó, trình duyệt có thể sử dụng thông tin này để cho phép truy cập hạn chế vào cookie trên nhiều trang web nhằm các mục đích cụ thể dành cho người dùng. Chrome sẽ sử dụng các mối quan hệ đã khai báo này để quyết định thời điểm cho phép hay từ chối một trang web truy cập vào cookie trong bối cảnh của bên thứ ba.

Nhìn chung, Nhóm bên thứ nhất là một tập hợp các miền, trong đó chỉ có một "Đặt làm miền chính" và có thể có nhiều "thành viên thiết lập". Chỉ tác giả trang web mới có thể gửi miền của họ tới một tập hợp và họ sẽ được yêu cầu khai báo mối quan hệ giữa từng "thành viên của tập hợp" thành "đặt làm vị trí chính". Các thành phần tập hợp có thể bao gồm nhiều loại miền khác nhau bằng các tập hợp con dựa trên trường hợp sử dụng.

Để tạo điều kiện cho trình duyệt xử lý từng tập hợp con theo các hệ quả về quyền riêng tư của từng tập hợp con, chúng tôi đề xuất sử dụng API Truy cập bộ nhớ (SAA) và requestStorageAccessForOrigin để cho phép truy cập vào cookie trong FPS.

Với SAA, các trang web có thể chủ động yêu cầu quyền truy cập vào cookie trên nhiều trang web. Chrome sẽ tự động cấp yêu cầu nếu trang web yêu cầu và trang web cấp cao nhất có cùng một khung hình trên giây. Vui lòng xem tài liệu về API Truy cập bộ nhớ (SAA) để biết thông tin về cách các trình duyệt khác xử lý các lệnh gọi đến SAA.

Hiện tại, SAA yêu cầu tài liệu phải thu thập thông tin kích hoạt của người dùng trước khi gọi các phương thức của API.

Điều này có thể khiến việc áp dụng FPS trở nên khó khăn đối với những trang web cấp cao nhất sử dụng hình ảnh trên nhiều trang web hoặc thẻ tập lệnh yêu cầu cookie. Nhằm giải quyết một số thách thức trong số này, chúng tôi đã đề xuất một API mới có tên là requestStorageAccessForOrigin để giúp nhà phát triển dễ dàng áp dụng thay đổi này. API này cũng có sẵn để thử nghiệm.

Thiết lập tính năng gửi

Danh sách FPS chính tắc sẽ là danh sách có thể xem công khai ở định dạng tệp JSON nằm trong kho lưu trữ FPS GitHub mới. Danh sách này sẽ đóng vai trò là nguồn dữ liệu chính xác cho tất cả các tập hợp. Chrome sẽ sử dụng tệp này để áp dụng cho hành vi của tệp.

Để tìm hiểu thêm về quy trình được đề xuất và các yêu cầu đối với việc gửi các nhóm, hãy xem nguyên tắc gửi. Bạn cũng có thể thử gửi một bộ để kiểm tra nhiều bước kiểm tra kỹ thuật nhằm xác thực nội dung gửi. Xin lưu ý rằng tất cả nội dung gửi sẽ bị xoá trước khi có khung hình trên giây trong các phiên bản Chrome ổn định.

Vì quy trình gửi tập hợp vẫn đang trong quá trình phát triển, nên để kiểm thử cục bộ, bạn chỉ có thể tạo tập hợp trên dòng lệnh rồi truyền trực tiếp chúng đến trình duyệt. Đối với kiểm thử cục bộ, bạn không bắt buộc phải gửi một tập hợp đến kho lưu trữ GitHub để kiểm thử với cờ tính năng.

Cách kiểm thử cục bộ

Điều kiện tiên quyết

Để kiểm thử FPS trên thiết bị, hãy dùng Chrome 108 trở lên được chạy từ dòng lệnh.

Để dùng thử các tính năng sắp ra mắt của Chrome trước khi phát hành, hãy tải phiên bản Chrome Beta hoặc Canary xuống.

Ví dụ:

google-chrome \
--enable-features="FirstPartySets,StorageAccessAPI,StorageAccessAPIForOriginExtension,PageInfoCookiesSubpage,PrivacySandboxFirstPartySetsUI" \
--use-first-party-set="{\"primary\": \"https://first-party-sets.glitch.me\", \"associatedSites\": [\"https://fps-member-1.glitch.me\"]}" \

Tìm hiểu thêm về cách chạy Chromium có cờ.

Các bước

Để bật FPS cục bộ, bạn cần sử dụng tuỳ chọn --enable-features của Chrome với danh sách các cờ được phân tách bằng dấu phẩy được giải thích trong phần này và khai báo một tập hợp các trang web liên quan dưới dạng đối tượng JSON để truyền đến --use-first-party-set.

Bật khung hình trên giây

FirstPartySets bật khung hình trên giây trong Chrome.

FirstPartySets

Bật Storage Access API

StorageAccessAPI

Bật API Truy cập bộ nhớ (SAA) trong Chrome. Khi đó, các iframe được nhúng có thể sử dụng requestStorageAccess() để yêu cầu quyền truy cập vào cookie trong bối cảnh trên nhiều trang web, ngay cả khi trình duyệt đã chặn cookie của bên thứ ba.

Xin lưu ý rằng khi được gọi, requestStorageAccess() cần có cử chỉ của người dùng để phân giải. Các phiên bản Chrome trong tương lai có thể đặt ra các nhóm yêu cầu khác do thông số kỹ thuật của SAA vẫn đang phát triển. Tham khảo tại đây để biết danh sách những điểm cải tiến theo kế hoạch đối với việc triển khai SAA của Chrome.

StorageAccessAPIForOriginExtension

Cho phép các trang web cấp cao nhất sử dụng requestStorageAccessForOrigin() để yêu cầu quyền truy cập vào bộ nhớ thay mặt cho những nguồn gốc cụ thể. Điều này rất hữu ích cho các trang web cấp cao nhất sử dụng hình ảnh trên nhiều trang web hoặc thẻ tập lệnh yêu cầu cookie và giải quyết một số thách thức trong việc áp dụng SAA.

Khai báo một tập hợp cục bộ

Nhóm bên thứ nhất là một tập hợp các miền trong đó có một "đặt làm miền chính" duy nhất và có thể có nhiều "thành viên thiết lập". Các thành phần tập hợp có thể bao gồm nhiều loại miền khác nhau bằng các tập hợp con dựa trên trường hợp sử dụng.

Tạo một đối tượng JSON chứa các URL là thành phần của một tập hợp và truyền đối tượng đó đến --use-first-party-set.

Trong ví dụ dưới đây, primary liệt kê miền chính, còn associatedSites liệt kê những miền đáp ứng yêu cầu của tập hợp con được liên kết.

{
     "primary": "https://primary.com",
    "associatedSites": ["https://associate1.com", "https://associate2.com", "https://associate3.com"]
}

Ví dụ:

--use-first-party-set="{\"primary\": \"https://first-party-sets.glitch.me\", \"associatedSites\": [\"https://fps-member-1.glitch.me\"]}"

Để kiểm thử cục bộ, bạn chỉ có thể tạo các tập hợp trên dòng lệnh và truyền trực tiếp các tập hợp đó đến trình duyệt. Đối với mục đích kiểm thử cục bộ, sẽ không có nhóm xác thực nào được thiết lập, nhưng khi FPS xuất hiện ở các phiên bản ổn định, tất cả các nhóm sẽ cần được gửi đến kho lưu trữ FPS GitHub và phải tuân theo tiêu chí xác thực.

Bật giao diện người dùng FPS (khung hình/giây)

PageInfoCookiesSubpage

Cho phép hiển thị FPS trong phần PageInfo có thể truy cập được từ thanh URL.

PrivacySandboxFirstPartySetsUI

Bật giao diện người dùng FPS "Cho phép các trang web liên quan xem hoạt động của bạn trong nhóm" trong phần cài đặt Chrome, trong mục Quyền riêng tư và bảo mật → Cookie và các dữ liệu trang web khác (chrome://settings/cookies).

Xác minh rằng cookie của bên thứ ba bị chặn

  1. Trong phần Cài đặt Chrome, hãy chuyển đến phần Quyền riêng tư và bảo mật → Cookie và các dữ liệu trang web khác hoặc chrome://settings/cookies.
  2. Trong phần Cài đặt chung, hãy đảm bảo rằng "Chặn cookie của bên thứ ba" đã được bật.
  3. Kiểm tra để đảm bảo tùy chọn phụ "Cho phép các trang web liên quan xem hoạt động của bạn trong nhóm" cũng sẽ được bật.

Lưu ý về bảo mật

Do API Truy cập bộ nhớ cho phép các trang web lấy lại quyền truy cập vào cookie của bên thứ ba trong một số trường hợp nhất định, nên API này có thể khiến các ứng dụng web dễ bị tấn công trên nhiều trang web và rò rỉ thông tin. Các trang web dựa vào cookie trong ngữ cảnh nhiều trang web cần phải biết được rủi ro của CSRF và các cuộc tấn công khác.

Cải thiện theo kế hoạch

Để cải thiện điều này, các bản phát hành Chrome trong tương lai sẽ yêu cầu các biện pháp kiểm soát bảo mật bổ sung nhằm đảm bảo rằng bạn chọn sử dụng các chế độ nhúng rõ ràng. Những điểm cải tiến được đề xuất sẽ: chỉ cấp quyền truy cập trên cơ sở từng khung hình, yêu cầu CORS đối với các yêu cầu đã được xác thực và chỉ giữ phạm vi truy cập vào nguồn gốc đó. Bạn có thể đọc thêm trong bản phân tích tính bảo mật gần đây.

Hãy xem danh sách các nội dung cải tiến theo kế hoạch đối với hoạt động triển khai SAA của Chrome.

Xin lưu ý rằng Chrome chỉ gửi cookie được đánh dấu là SameSite=None trong ngữ cảnh được nhúng trên nhiều trang web, đây là nơi có liên quan đến API Truy cập bộ nhớ. Tuy nhiên, cho đến khi tất cả trình duyệt ngừng sử dụng quyền truy cập mặc định vào các cookie đó, không có giả định nào có thể được đưa ra về vị trí có thể sử dụng cookie. Việc cho rằng quyền truy cập sẽ chỉ được cho phép trong một khung hình trên giây là không an toàn, và các trang web nên tiếp tục áp dụng những phương pháp bảo mật tiêu chuẩn hay nhất.

Thu hút và chia sẻ ý kiến phản hồi

Kiểm thử cục bộ là cơ hội để bạn dùng thử cơ chế Storage Access API (API Truy cập bộ nhớ) để bật FPS và chia sẻ ý kiến phản hồi hoặc bất kỳ sự cố nào mà bạn gặp phải. Ngoài ra, việc kiểm thử quy trình gửi tập hợp trên GitHub là một cơ hội để bạn chia sẻ trải nghiệm về quy trình và các bước xác thực. Cách tương tác và chia sẻ ý kiến phản hồi về đề xuất mới cập nhật: