[OUTDATED] Nhóm bên thứ nhất và thuộc tính SameParty

Nhiều tổ chức có các trang web liên quan với nhiều tên miền, chẳng hạn như brandx.sitefly-brandx.site—hoặc các miền cho các quốc gia khác nhau như example.com, example.rs, example.co.uk, v.v.

Các trình duyệt đang chuyển sang tạo cookie của bên thứ ba lỗi thời nhằm cải thiện quyền riêng tư trên web, nhưng các trang web như thế này thường dựa vào cookie để các chức năng yêu cầu duy trì và truy cập trạng thái trên các miền (chẳng hạn như quản lý sự đồng ý và đăng nhập một lần).

Nhóm bên thứ nhất có thể cho phép các tên miền liên quan do họ sở hữu và điều hành cùng pháp nhân được coi là bên thứ nhất trong trường hợp bên thứ nhất và bên thứ ba được xử lý theo cách khác. Tên miền trong một nhóm bên thứ nhất được coi là cùng bên và họ có thể gắn nhãn cookie nào nhằm mục đích đặt hoặc gửi trong bối cảnh cùng bên. Mục tiêu là tìm ra cân bằng giữa việc ngăn chặn bên thứ ba theo dõi trên nhiều trang web trong khi vẫn duy trì một đường dẫn không phá vỡ các trường hợp sử dụng hợp lệ.

Đề xuất về Nhóm bên thứ nhất hiện đang được thử nghiệm giai đoạn này, hãy đọc tiếp để tìm hiểu cách thức hoạt động và cách dùng thử.

Cookie của bên thứ nhất và bên thứ ba khác nhau như thế nào?

Cookie vốn không phải là của bên thứ nhất hay của bên thứ ba, điều này phụ thuộc vào thông tin nhân khẩu học hiện tại ngữ cảnh có chứa cookie. Đó là một yêu cầu trong Tiêu đề cookie hoặc thông qua document.cookie trong JavaScript.

Ví dụ: nếu video.site có cookie theme=dark, khi bạn đang duyệt web video.site và một yêu cầu được gửi đến video.site, đó là cùng một trang web ngữ cảnh và cookie được bao gồm là bên thứ nhất.

Tuy nhiên, nếu bạn đang sử dụng my-blog.site có nhúng trình phát iframe cho video.site, khi yêu cầu được thực hiện từ my-blog.site đến video.site bối cảnh trên nhiều trang web và cookie theme là của bên thứ ba.

Sơ đồ cho thấy một cookie của video.site trong hai ngữ cảnh. Cookie thuộc cùng trang web khi ngữ cảnh cấp cao nhất cũng là video.site. Cookie được chuyển đến nhiều trang web khi ngữ cảnh cấp cao nhất là my-blog.site với video.site trong iframe.

Việc bao gồm cookie được xác định bằng thuộc tính SameSite của cookie:

  • Cùng một trang web ngữ cảnh bằng SameSite=Lax, Strict hoặc None sẽ tạo cookie bên thứ nhất.
  • Bối cảnh trên nhiều trang web với SameSite=None giúp cookie này trở thành bên thứ ba.

Tuy nhiên, điều này không phải lúc nào cũng rõ ràng. Hãy tưởng tượng brandx.site là một chuyến du lịch trang web đặt phòng. Họ cũng sử dụng fly-brandx.sitedrive-brandx.site để chuyến bay riêng và thuê ô tô. Trong suốt quá trình đặt một hành trình, khách tham quan chuyển giữa các trang web này để chọn các lựa chọn khác nhau—họ mong muốn "giỏ hàng" để tiếp tục sử dụng trên các trang web này. brandx.site quản lý phiên hoạt động của người dùng bằng cookie SameSite=None để cho phép phiên hoạt động đó ngữ cảnh trên nhiều trang web. Tuy nhiên, nhược điểm hiện tại là cookie không có Yêu cầu bảo vệ chống Giả mạo (CSRF). Nếu evil.site đưa ra yêu cầu: brandx.site thì hệ thống sẽ bao gồm cookie đó!

Cookie này diễn ra trên nhiều trang web, nhưng tất cả các trang web đó đều được sở hữu và điều hành bởi cùng một trang web tổ chức. Khách truy cập cũng hiểu rằng đó là cùng một tổ chức và muốn cùng một phiên hoạt động, hay nói cách khác là cùng một danh tính giữa chúng.

Sơ đồ cho thấy cách cookie vẫn có thể được đưa vào ngữ cảnh nhiều trang web nếu các trang web đó thuộc cùng một Nhóm bên thứ nhất, nhưng cookie đó sẽ bị từ chối trong các bối cảnh nhiều trang web nằm ngoài tập hợp đó.

Chính sách về Nhóm bên thứ nhất

Nhóm bên thứ nhất đề xuất một để xác định rõ ràng mối quan hệ này trên nhiều trang web đều thuộc sở hữu và điều hành của cùng một bên. Điều này sẽ cho phép brandx.site xác định mối quan hệ bên thứ nhất với fly-brandx.site, drive-brandx.site, v.v.

Mô hình bảo vệ quyền riêng tư thúc đẩy các đề xuất khác nhau trong Hộp cát về quyền riêng tư dựa trên khái niệm phân vùng để ngăn chặn theo dõi qua nhiều trang web – vẽ ranh giới giữa các trang web giới hạn quyền truy cập vào bất kỳ thông tin nào có thể dùng để nhận dạng người dùng.

Sơ đồ cho thấy trạng thái không được phân vùng, trong đó cùng một cookie của bên thứ ba có thể truy cập được trong nhiều ngữ cảnh trên nhiều trang web trái ngược với mô hình được phân vùng, trong đó mỗi ngữ cảnh cấp cao nhất có một phiên bản riêng của cookie trên nhiều trang web ngăn chặn hoạt động liên kết trên các trang web đó.

Mặc dù chế độ mặc định là phân vùng theo trang web, cách này giúp giải quyết nhiều vấn đề của bên thứ nhất trường hợp sử dụng, ví dụ brandx.site cho thấy rằng bên thứ nhất có thể lớn hơn so với chỉ một trang web.

Sơ đồ cho thấy cách sử dụng cùng một phiên bản của cookie cho một tập hợp trong ngữ cảnh nhiều trang web khi tất cả các trang web đó là một phần của cùng một tập hợp.

Một phần quan trọng trong đề xuất về Nhóm bên thứ nhất là đảm bảo chính sách trên các trình duyệt ngăn chặn hành vi sai trái hoặc sử dụng sai. Ví dụ: Nhóm bên thứ nhất không được cho phép trao đổi thông tin người dùng trên các trang web không liên quan hoặc nhóm không thuộc sở hữu của cùng một pháp nhân. Mục đích là để đảm bảo rằng Nhóm bên thứ nhất liên kết với đối tượng mà người dùng hiểu là bên thứ nhất và không được dùng như một cách để chia sẻ danh tính giữa các bên khác nhau.

Một cách khả thi để một trang web đăng ký nhóm của bên thứ nhất là dùng chính trang web đó để gửi nhóm miền mà họ đề xuất tới một công cụ theo dõi công khai (chẳng hạn như kho lưu trữ GitHub chuyên dụng) cùng với thông tin cần thiết để đáp ứng trình duyệt .

Sau khi xác nhận nhóm bên thứ nhất đã được xác minh theo chính sách, các trình duyệt có thể sau đó tìm nạp danh sách các nhóm thông qua quy trình cập nhật.

Bản dùng thử theo nguyên gốc có một chính sách đã xác định và chưa phải là chính sách chính thức, nhưng các nguyên tắc có thể vẫn giữ nguyên:

  • Các miền trong nhóm bên thứ nhất phải do cùng một bên sở hữu và điều hành tổ chức.
  • Người dùng phải nhận ra các miền này là một nhóm.
  • Các miền này nên có cùng một chính sách quyền riêng tư.

Cách xác định nhóm bên thứ nhất

Sau khi bạn xác định được thành viên và chủ sở hữu bên thứ nhất của tổ chức bước quan trọng là gửi bộ đề xuất của bạn để phê duyệt. Cụm từ chính xác quá trình này vẫn đang được thảo luận.

Để khai báo một nhóm bên thứ nhất, các tài nguyên JSON tĩnh liệt kê thành viên và chủ sở hữu phải được lưu trữ tại /.well-known/first-party-set ở cấp cao nhất của mỗi miền được bao gồm.

Trong ví dụ về nhóm bên thứ nhất brandx, miền chủ sở hữu lưu trữ đang theo dõi tại https://brandx.site/.well-known/first-party-set:

{
  "owner": "brandx.site",
  "version": 1,
  "members": ["fly-brandx.site", "drive-brandx.site"]
}

Mỗi thành phần của tập hợp cũng lưu trữ một tài nguyên JSON tĩnh trỏ lại chủ sở hữu của tập hợp. Tại https://fly-brandx.site/.well-known/first-party-set, chúng tôi có:

{ "owner": "brandx.site" }

Và tại https://drive-brandx.site/.well-known/first-party-set:

{ "owner": "brandx.site" }

Có một vài ràng buộc đối với các nhóm bên thứ nhất:

  • Một tập hợp chỉ có thể có một chủ sở hữu.
  • Một thành viên chỉ có thể thuộc về một nhóm, không bị chồng chéo hoặc kết hợp.
  • Danh sách thành viên được thiết kế để đảm bảo rằng con người có thể đọc được và không quá lớn.

Nhóm bên thứ nhất ảnh hưởng đến cookie như thế nào?

Nguyên liệu phù hợp cho bánh quy là SameParty được đề xuất . Đang chỉ định SameParty yêu cầu trình duyệt bao gồm cookie khi ngữ cảnh của nó giống với bên thứ nhất đặt làm ngữ cảnh cấp cao nhất.

Điều đó có nghĩa là nếu brandx.site đặt cookie này:

Set-Cookie: session=123; Secure; SameSite=Lax; SameParty

Sau đó, khi khách truy cập vào fly-brandx.site và có một yêu cầu được chuyển đến brandx.site thì cookie session sẽ được đưa vào yêu cầu đó. Ví dụ: Nếu một số trang web khác không thuộc nhóm của bên thứ nhất hotel.xyz, gửi yêu cầu đến brandx.site, thì cookie này sẽ không được đưa vào.

Sơ đồ cho thấy việc cho phép hoặc chặn cookie brandx.site trong ngữ cảnh trên nhiều trang web theo mô tả.

Cho đến khi SameParty được hỗ trợ rộng rãi, hãy dùng thuộc tính SameSite cùng với thuộc tính này để xác định hành vi dự phòng cho cookie. Bạn có thể nghĩ đến SameParty là cung cấp cho bạn một cài đặt trong khoảng từ SameSite=Lax đến SameSite=None.

  • SameSite=Lax; SameParty sẽ mở rộng chức năng Lax để bao gồm bối cảnh cùng bên (nếu được hỗ trợ), nhưng sẽ quay lại dùng Lax nếu không có.
  • SameSite=None; SameParty sẽ hạn chế chức năng của None để chỉ bối cảnh của cùng một bên được hỗ trợ, nhưng sẽ quay lại dùng bối cảnh None nếu không.

Có một số yêu cầu bổ sung:

  • SameParty cookie phải bao gồm Secure.
  • SameParty cookie không được bao gồm SameSite=Strict.

Secure được bắt buộc vì hoạt động này vẫn diễn ra trên nhiều trang web và bạn nên giảm thiểu các lỗi đó rủi ro bằng cách đảm bảo kết nối (HTTPS) được bảo mật. Tương tự, vì đây là mối quan hệ giữa nhiều trang web, SameSite=Strict không hợp lệ vì nó vẫn cho phép bảo vệ CSRF dựa trên trang web chặt chẽ trong một tập hợp.

Những trường hợp sử dụng nào phù hợp với Nhóm bên thứ nhất?

Nhóm bên thứ nhất là lựa chọn phù hợp cho những trường hợp mà một tổ chức cần một biểu mẫu chung trên các trang web cấp cao nhất khác nhau. Danh tính chung trong trường hợp này có nghĩa là bất cứ thứ gì, từ một giải pháp đăng nhập một lần đầy đủ cho đến việc chỉ cần một giải pháp lựa chọn ưu tiên trên các trang web.

Tổ chức của bạn có thể có các miền cấp cao nhất khác nhau dành cho:

  • Miền ứng dụng: office.com,live.com, microsoft.com
  • Miền thương hiệu: amazon.com, audible.com / disney.com, pixar.com
  • Miền theo quốc gia để bật tính năng bản địa hoá: google.co.in, google.co.uk
  • Miền dịch vụ mà người dùng không bao giờ tương tác trực tiếp, nhưng cung cấp trên các trang web của cùng một tổ chức: gstatic.com, fbcdn.net, githubassets.com
  • Miền hộp cát mà người dùng không bao giờ tương tác trực tiếp, nhưng tồn tại trong lý do bảo mật: googleusercontent.com, githubusercontent.com

Bạn tham gia bằng cách nào?

Nếu bạn có một nhóm trang web phù hợp với tiêu chí ở trên thì có nhiều cách tham gia. Cách đầu tư ít nhất là đọc và tham gia thảo luận về hai đề xuất:

Trong giai đoạn kiểm thử, bạn có thể thử chức năng này bằng cách sử dụng Cờ hiệu dòng lệnh --use-first-party-set và cung cấp một danh sách được phân tách bằng dấu phẩy trang web.

Bạn có thể thử thao tác này trên trang web minh hoạ tại https://fps-member1.glitch.me/ sau khi bắt đầu Chrome có cờ sau:

--use-first-party-set=https://fps-member1.glitch.me,https://fps-member2.glitch.me,https://fps-member3.glitch.me

Điều này rất hữu ích nếu bạn muốn kiểm thử trong môi trường phát triển hoặc muốn hãy thử thêm thuộc tính SameParty vào môi trường trực tiếp để xem nhóm bên thứ nhất sẽ ảnh hưởng đến cookie.

Nếu có đủ điều kiện để thử nghiệm và phản hồi, bạn cũng có thể đăng ký đối với Bản dùng thử theo nguyên gốc cho Nhóm bên thứ nhất và SameParty có sẵn trong Chrome từ phiên bản 89 đến 93.

Cách cập nhật cookie cho bản dùng thử theo nguyên gốc

Nếu bạn đang tham gia bản dùng thử theo nguyên gốc và thử nghiệm thuộc tính SameParty trên cookie của bạn, dưới đây là hai mẫu cần xem xét.

Tùy chọn 1

Trước tiên, nơi bạn có cookie mà bạn đã gắn nhãn là SameSite=None nhưng bạn muốn hạn chế ở bối cảnh của bên thứ nhất, bạn có thể thêm SameParty thuộc tính nào cho chúng. Trong các trình duyệt nơi bản dùng thử theo nguyên gốc đang hoạt động, cookie sẽ không được gửi trong ngữ cảnh nhiều trang web bên ngoài tập hợp.

Tuy nhiên, với phần lớn các trình duyệt không thuộc bản dùng thử theo nguyên gốc thì cookie sẽ tiếp tục được gửi trên nhiều trang web như thường lệ. Hãy xem đây là một phương pháp nâng cao từng bước.

Trước: set-cookie: cname=cval; SameSite=None; Secure

Sau: set-cookie: cname=cval; SameSite=None; Secure; SameParty

Tùy chọn 2

Lựa chọn thứ hai phức tạp hơn, nhưng cho phép bạn tách riêng hoàn toàn nguồn gốc bản dùng thử từ chức năng hiện có và đặc biệt cho phép thử nghiệm Tổ hợp SameSite=Lax; SameParty.

Trước: set-cookie: cname=cval; SameSite=None; Secure

Sau:

set-cookie: cname=cval; SameSite=None; Secure
set-cookie: cname-fps=cval; SameSite=Lax; Secure; SameParty

Khi kiểm tra cookie trên các yêu cầu được gửi đến, bạn chỉ nên thấy cookie cookie cname-fps theo yêu cầu trên nhiều trang web nếu các trang web có liên quan nằm trong và trình duyệt đang ở phiên bản dùng thử theo nguyên gốc. Hãy xem phương pháp này như một khởi chạy đồng thời một tính năng đã cập nhật trước khi ngừng tính năng trước đó .

Vì sao bạn không cần nhóm của bên thứ nhất?

Đối với phần lớn các trang web, ranh giới trang web của chúng là một vị trí có thể chấp nhận để vẽ phân vùng hoặc ranh giới quyền riêng tư. Đây là tuyến đường đang được đề xuất CHIPS (Cookie được phân vùng độc lập Trạng thái) để cấp cho các trang web quyền chọn sử dụng định tuyến thông qua thuộc tính Partitioned để vẫn có các trang web quan trọng đó nhúng, tài nguyên, API và dịch vụ, đồng thời ngăn chặn rò rỉ thông tin nhận dạng trên các trang web.

Một vài yếu tố khác cần xem xét cho thấy trang web của bạn có thể vẫn hoạt động bình thường mà không cần đến một tập hợp:

  • Bạn lưu trữ trên các nguồn gốc khác nhau, chứ không phải các trang web khác nhau. Trong ví dụ trên, nếu brandx.sitefly.brandx.sitedrive.brandx.site thì các kết quả đó là các miền con khác nhau trong cùng một trang web. Cookie có thể sử dụng SameSite=Lax và không có tập hợp nào cần thiết.
  • Bạn cung cấp các video nhúng của bên thứ ba tới các trang web khác. Ở phần giới thiệu, ví dụ về video từ video.site được nhúng trên my-blog.site là bên thứ ba rõ ràng chia. Các trang web này do các tổ chức khác nhau điều hành và người dùng sẽ nhìn thấy các trang web đó dưới dạng các thực thể riêng biệt. Hai trang web đó không được nằm trong cùng một nhóm.
  • Bạn cung cấp dịch vụ đăng nhập bằng mạng xã hội của bên thứ ba. Nhà cung cấp danh tính đang sử dụng những dịch vụ như OAuth hoặc OpenId kết nối thường dựa vào cookie của bên thứ ba để trải nghiệm đăng nhập mượt mà hơn cho người dùng. Đây là một trường hợp sử dụng hợp lệ nhưng không phải là phù hợp với Nhóm bên thứ nhất vì có sự khác biệt rõ ràng giữa các tổ chức. Các đề xuất ban đầu như WebID khám phá cách kích hoạt các trường hợp sử dụng này.