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.site
và fly-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.

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ặcNone
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.site
và drive-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.

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.

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.

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.

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ăngLax
để bao gồm bối cảnh cùng bên (nếu được hỗ trợ), nhưng sẽ quay lại dùngLax
nếu không có.SameSite=None; SameParty
sẽ hạn chế chức năng củaNone
để 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ảnhNone
nếu không.
Có một số yêu cầu bổ sung:
SameParty
cookie phải bao gồmSecure
.SameParty
cookie không được bao gồmSameSite=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:
- Thảo luận trong nhóm cộng đồng về quyền riêng tư của Nhóm bên thứ nhất
- Thảo luận về thuộc tính cookie cùng nhóm
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.site
cófly.brandx.site
vàdrive.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ụngSameSite=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ênmy-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.