[OUTDATED] ชุดโดเมนของบุคคลที่หนึ่งและแอตทริบิวต์ SameParty

องค์กรหลายแห่งมีเว็บไซต์ที่เกี่ยวข้องซึ่งมีชื่อโดเมนต่างกัน เช่น brandx.site และ fly-brandx.site หรือโดเมนสำหรับประเทศต่างๆ เช่น example.com, example.rs, example.co.uk เป็นต้น

เบราว์เซอร์กําลังเลิกใช้งานคุกกี้ของบุคคลที่สามเพื่อปรับปรุงความเป็นส่วนตัวบนเว็บ แต่เว็บไซต์เหล่านี้มักใช้คุกกี้สําหรับฟังก์ชันการทํางานที่จําเป็นต้องมีการบำรุงรักษาและเข้าถึงสถานะในโดเมนต่างๆ (เช่น การลงชื่อเข้าใช้ครั้งเดียวและการจัดการความยินยอม)

ชุดบุคคลที่หนึ่งอาจอนุญาตให้ระบบถือว่าชื่อโดเมนที่เกี่ยวข้องซึ่งบุคคลเดียวกันเป็นเจ้าของและดําเนินการเป็นบุคคลที่หนึ่งในสถานการณ์ที่ระบบถือว่าบุคคลที่หนึ่งและบุคคลที่สามเป็นคนละฝ่ายกัน ชื่อโดเมนภายในชุดของบุคคลที่หนึ่งจะถือว่าบุคคลเดียวกัน และสามารถติดป้ายกำกับคุกกี้ที่มีไว้เพื่อตั้งค่าหรือส่งในบริบทของบุคคลเดียวกัน โดยมีจุดประสงค์เพื่อหาจุดสมดุลระหว่างการป้องกันการติดตามข้ามเว็บไซต์โดยบุคคลที่สาม ในขณะเดียวกันก็ยังคงรักษาเส้นทางที่ไม่ทำให้กรณีการใช้งานที่ถูกต้องใช้งานไม่ได้

ปัจจุบันข้อเสนอชุดของบุคคลที่หนึ่งอยู่ในขั้นตอนการทดสอบ โปรดอ่านต่อเพื่อดูวิธีทํางานและวิธีลองใช้

คุกกี้ของบุคคลที่หนึ่งกับบุคคลที่สามแตกต่างกันอย่างไร

คุกกี้ไม่ได้เป็นคุกกี้ของบุคคลที่หนึ่งหรือบุคคลที่สามโดยเนื้อแท้ แต่ขึ้นอยู่กับบริบทปัจจุบันที่มีคุกกี้รวมอยู่ด้วย ซึ่งอาจเป็นในคำขอในส่วนหัว cookie หรือผ่าน document.cookie ใน JavaScript

ตัวอย่างเช่น หาก video.site มีคุกกี้ theme=dark เมื่อคุณท่องเว็บใน video.site และมีคำขอไปยัง video.site แสดงว่าเป็นบริบทแบบเว็บไซต์เดียวกัน และคุกกี้ที่รวมอยู่นั้นคือคุกกี้ของบุคคลที่หนึ่ง

อย่างไรก็ตาม หากคุณใช้ my-blog.site ซึ่งฝังโปรแกรมเล่น iframe สําหรับ video.site เมื่อมีการขอจาก my-blog.site ไปยัง video.site บริบทนั้นจะเป็นบริบทข้ามเว็บไซต์ และคุกกี้ theme จะเป็นคุกกี้ของบุคคลที่สาม

แผนภาพแสดงคุกกี้จาก video.site ใน 2 บริบท คุกกี้จะอยู่ในเว็บไซต์เดียวกันเมื่อบริบทระดับบนสุดเป็น video.site ด้วย คุกกี้จะข้ามเว็บไซต์เมื่อบริบทระดับบนสุดคือ my-blog.site ที่มี video.site ใน iframe

การรวมคุกกี้จะกำหนดโดยแอตทริบิวต์ SameSite ของคุกกี้ ดังนี้

  • บริบท SameSite ที่มี SameSite=Lax, Strict หรือ None จะทําให้คุกกี้เป็นคุกกี้ของบุคคลที่หนึ่ง
  • บริบทข้ามเว็บไซต์ที่มี SameSite=None ทําให้คุกกี้เป็นของบุคคลที่สาม

อย่างไรก็ตาม เรื่องนี้อาจไม่ชัดเจนเสมอไป สมมติว่า brandx.site เป็นเว็บไซต์การจองการเดินทางและใช้ fly-brandx.site และ drive-brandx.site เพื่อแยกเที่ยวบินและรถเช่า ตลอดเส้นทางการจอง 1 รายการ ผู้เข้าชมจะไปยังเว็บไซต์เหล่านี้เพื่อเลือกตัวเลือกต่างๆ โดยคาดหวังว่า "รถเข็นช็อปปิ้ง" ของตัวเลือกจะยังคงอยู่ตลอดในเว็บไซต์เหล่านี้ brandx.site จัดการเซสชันของผู้ใช้ด้วยคุกกี้ SameSite=None เพื่ออนุญาตในบริบทข้ามเว็บไซต์ แต่ข้อเสียคือตอนนี้คุกกี้จะไม่มีการป้องกันการปลอมแปลงคําขอข้ามเว็บไซต์ (CSRF) หาก evil.site มีคำขอไปที่ brandx.site ก็จะรวมคุกกี้นั้นด้วย

คุกกี้นี้ใช้ข้ามเว็บไซต์ แต่เว็บไซต์ทั้งหมดนั้นเป็นเจ้าของและดําเนินการโดยองค์กรเดียวกัน ผู้เข้าชมยังเข้าใจด้วยว่าเว็บไซต์เหล่านี้เป็นองค์กรเดียวกันและต้องการเซสชันเดียวกัน กล่าวคือ ข้อมูลประจำตัวที่แชร์กัน

แผนภาพแสดงวิธีที่คุกกี้อาจยังคงรวมอยู่ในบริบทข้ามเว็บไซต์หากเว็บไซต์เป็นส่วนหนึ่งของชุดโดเมนของบุคคลที่หนึ่งเดียวกัน แต่จะถูกปฏิเสธสําหรับบริบทข้ามเว็บไซต์นอกชุด

นโยบายชุดบุคคลที่หนึ่ง

ชุดโดเมนของบุคคลที่หนึ่งเสนอวิธีกำหนดความสัมพันธ์นี้อย่างชัดเจนในหลายเว็บไซต์ที่บุคคลเดียวกันเป็นเจ้าของและดำเนินการ ซึ่งจะช่วยให้ brandx.site กําหนดความสัมพันธ์แบบบุคคลที่หนึ่งกับ fly-brandx.site, drive-brandx.site และอื่นๆ ได้

รูปแบบความเป็นส่วนตัวที่ขับเคลื่อนข้อเสนอต่างๆ ของ Privacy Sandbox นั้นอิงตามแนวคิดการแบ่งพาร์ติชันตัวตนเพื่อป้องกันการติดตามข้ามเว็บไซต์ ซึ่งจะกำหนดขอบเขตระหว่างเว็บไซต์ต่างๆ ที่จำกัดการเข้าถึงข้อมูลใดๆ ที่สามารถใช้ระบุตัวตนผู้ใช้ได้

แผนภาพที่แสดงสถานะที่ไม่ได้แบ่งพาร์ติชันซึ่งเข้าถึงคุกกี้ของบุคคลที่สามเดียวกันได้ในบริบทข้ามเว็บไซต์หลายรายการ ซึ่งแตกต่างจากรูปแบบที่มีการแบ่งพาร์ติชันที่บริบทระดับบนสุดแต่ละรายการมีอินสแตนซ์แยกต่างหากของคุกกี้ข้ามเว็บไซต์ ซึ่งป้องกันไม่ให้มีกิจกรรมการลิงก์ในเว็บไซต์เหล่านั้น

แม้ว่าตัวเลือกเริ่มต้นจะเป็นการแบ่งพาร์ติชันตามเว็บไซต์ ซึ่งช่วยแก้ปัญหา Use Case ของบุคคลที่หนึ่งได้หลายรายการ แต่ตัวอย่าง brandx.site แสดงให้เห็นว่าบุคคลที่หนึ่งอาจใหญ่กว่าเว็บไซต์เพียงเว็บไซต์เดียว

แผนภาพแสดงวิธีที่อินสแตนซ์เดียวกันของคุกกี้สําหรับชุดหนึ่งอาจรวมอยู่ในบริบทข้ามเว็บไซต์เมื่อเว็บไซต์ทั้งหมดเหล่านั้นเป็นส่วนหนึ่งของชุดเดียวกัน

ส่วนสําคัญของข้อเสนอชุดโดเมนของบุคคลที่หนึ่งคือการทำให้นโยบายในเบราว์เซอร์ต่างๆ ป้องกันการละเมิดหรือการใช้ในทางที่ผิด เช่น ชุดของบุคคลที่หนึ่งต้องไม่อนุญาตให้แลกเปลี่ยนข้อมูลผู้ใช้ในเว็บไซต์ที่ไม่เกี่ยวข้อง หรือการจัดกลุ่มเว็บไซต์ที่ไม่ได้เป็นของบุคคลเดียวกัน แนวคิดนี้ช่วยให้มั่นใจได้ว่าชุดของบุคคลที่หนึ่งจะจับคู่กับสิ่งที่ผู้ใช้เข้าใจว่าเป็นบุคคลที่หนึ่ง และไม่ได้ใช้เป็นวิธีแชร์ข้อมูลประจำตัวกับบุคคลต่างๆ

วิธีที่เป็นไปได้อย่างหนึ่งที่เว็บไซต์จะลงทะเบียนชุดของบุคคลที่หนึ่งได้คือเว็บไซต์ต้องส่งกลุ่มโดเมนที่เสนอไปยังเครื่องมือติดตามสาธารณะ (เช่น ที่เก็บ GitHub โดยเฉพาะ) พร้อมกับข้อมูลที่จําเป็นเพื่อปฏิบัติตามนโยบายเบราว์เซอร์

เมื่อการยืนยันชุดโดเมนของบุคคลที่หนึ่งได้รับการยืนยันตามนโยบายแล้ว เบราว์เซอร์อาจดึงข้อมูลรายการชุดผ่านกระบวนการอัปเดต

การทดลองใช้ต้นฉบับมีนโยบายที่กำหนดไว้ซึ่งยังไม่เป็นเวอร์ชันสุดท้าย แต่หลักการมีแนวโน้มที่จะยังคงเหมือนเดิม ดังนี้

  • โดเมนในชุดของบุคคลที่หนึ่งต้องเป็นเจ้าของและดำเนินการโดยองค์กรเดียวกัน
  • โดเมนควรเป็นกลุ่มที่ผู้ใช้จดจำได้
  • โดเมนควรมีนโยบายความเป็นส่วนตัวเดียวกัน

วิธีกําหนดชุดบุคคลที่หนึ่ง

เมื่อระบุสมาชิกและเจ้าของชุดข้อมูลบุคคลที่หนึ่งขององค์กรแล้ว ขั้นตอนสําคัญคือการส่งชุดข้อมูลที่เสนอเพื่อขออนุมัติ กระบวนการที่แน่นอนยังอยู่ระหว่างการหารือ

หากต้องการประกาศชุดโดเมนของบุคคลที่หนึ่ง ทรัพยากร JSON แบบคงที่ซึ่งแสดงรายการสมาชิกและเจ้าของควรโฮสต์ที่ /.well-known/first-party-set ที่ระดับบนสุดของโดเมนที่รวมไว้แต่ละโดเมน

ในตัวอย่างชุดบุคคลที่หนึ่ง brandx โดเมนเจ้าของจะโฮสต์ข้อมูลต่อไปนี้ที่ https://brandx.site/.well-known/first-party-set

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

สมาชิกแต่ละคนของชุดยังโฮสต์ทรัพยากร JSON แบบคงที่ซึ่งชี้กลับไปยังเจ้าของชุดด้วย เรามีสิ่งต่อไปนี้ใน https://fly-brandx.site/.well-known/first-party-set

{ "owner": "brandx.site" }

และที่ https://drive-brandx.site/.well-known/first-party-set

{ "owner": "brandx.site" }

ชุดของบุคคลที่หนึ่งมีข้อจำกัดบางประการ ดังนี้

  • ชุดหนึ่งๆ มีเจ้าของได้เพียงคนเดียว
  • สมาชิกจะอยู่ในชุดได้เพียงชุดเดียวเท่านั้น ไม่มีการทับซ้อนหรือผสม
  • รายชื่อสมาชิกควรเป็นรายการที่มนุษย์อ่านออกได้และไม่ใหญ่จนเกินไป

ชุดโดเมนของบุคคลที่หนึ่งส่งผลต่อคุกกี้อย่างไร

ส่วนผสมที่ตรงกันสำหรับคุกกี้คือSameParty แอตทริบิวต์ที่เสนอ การระบุ SameParty จะบอกให้เบราว์เซอร์รวมคุกกี้เมื่อบริบทของคุกกี้เป็นส่วนหนึ่งของชุดบุคคลที่หนึ่งเดียวกันกับบริบทระดับบนสุด

ซึ่งหมายความว่าหาก brandx.site ตั้งค่าคุกกี้นี้

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

จากนั้นเมื่อผู้เข้าชมอยู่ใน fly-brandx.site และคำขอส่งไปยัง brandx.site คุกกี้ session จะรวมอยู่ในคำขอนั้น หากเว็บไซต์อื่นที่ไม่ได้เป็นส่วนหนึ่งของชุดของบุคคลที่หนึ่ง เช่น hotel.xyz ส่งคําขอไปยัง brandx.site ระบบจะไม่รวมคุกกี้ดังกล่าว

แผนภาพแสดงคุกกี้ brandx.site ที่อนุญาตหรือถูกบล็อกในบริบทข้ามเว็บไซต์ตามที่อธิบายไว้

จนกว่าจะมีการใช้ SameParty อย่างแพร่หลาย ให้ใช้แอตทริบิวต์ SameSite ควบคู่ไปด้วยเพื่อกําหนดลักษณะการทำงานสำรองสําหรับคุกกี้ คุณอาจคิดว่าแอตทริบิวต์ SameParty จะให้การตั้งค่าระหว่าง SameSite=Lax กับ SameSite=None

  • SameSite=Lax; SameParty จะขยายฟังก์ชันของ Lax ให้รวมบริบทของบุคคลเดียวกันหากรองรับ แต่จะใช้ข้อจํากัดของ Lax แทนหากไม่รองรับ
  • SameSite=None; SameParty จะจำกัดฟังก์ชันการทำงาน None ไว้เฉพาะบริบทของบุคคลเดียวกันในกรณีที่รองรับ แต่จะใช้สิทธิ์ None ที่กว้างขึ้นหากไม่รองรับ

ข้อกำหนดเพิ่มเติมมีดังนี้

  • คุกกี้ SameParty ต้องมี Secure
  • คุกกี้ SameParty ต้องไม่มี SameSite=Strict

Secure จำเป็นต้องมีเนื่องจากยังคงเป็นคุกกี้ข้ามเว็บไซต์ และคุณควรลดความเสี่ยงเหล่านั้นด้วยการเชื่อมต่อที่ปลอดภัย (HTTPS) ในทํานองเดียวกัน เนื่องจากเป็นความสัมพันธ์ข้ามเว็บไซต์ SameSite=Strict จึงไม่ถูกต้องเนื่องจากยังคงอนุญาตให้มีการป้องกัน CSRF ที่เข้มงวดตามเว็บไซต์ภายในชุด

กรณีการใช้งานใดเหมาะกับชุดโดเมนของบุคคลที่หนึ่ง

ชุดโดเมนของบุคคลที่หนึ่งเหมาะสําหรับกรณีที่องค์กรต้องการรูปแบบข้อมูลระบุตัวตนที่แชร์ในเว็บไซต์ระดับบนสุดที่แตกต่างกัน ข้อมูลประจำตัวที่แชร์ในกรณีนี้หมายถึงตั้งแต่โซลูชันการลงชื่อเพียงครั้งเดียวแบบสมบูรณ์ไปจนถึงเพียงความต้องการใช้ค่ากำหนดที่แชร์ในเว็บไซต์ต่างๆ

องค์กรของคุณอาจมีโดเมนระดับบนสุดที่แตกต่างกันสำหรับสิ่งต่อไปนี้

  • โดเมนแอป: office.com,live.com, microsoft.com
  • โดเมนที่มีแบรนด์: amazon.com, audible.com / disney.com, pixar.com
  • โดเมนเจาะจงประเทศเพื่อเปิดใช้การแปล: google.co.in, google.co.uk
  • โดเมนบริการที่ผู้ใช้ไม่เคยโต้ตอบโดยตรง แต่ให้บริการในเว็บไซต์ขององค์กรเดียวกัน ได้แก่ gstatic.com, githubassets.com, fbcdn.net
  • โดเมนแซนด์บ็อกซ์ที่ผู้ใช้ไม่เคยโต้ตอบด้วยโดยตรง แต่มีไว้เพื่อเหตุผลด้านความปลอดภัย: googleusercontent.com, githubusercontent.com

คุณมีส่วนร่วมได้อย่างไร

หากมีชุดเว็บไซต์ที่ตรงกับเกณฑ์ข้างต้น คุณจะมีตัวเลือกมากมายในการเข้าร่วม การลงทุนที่เบาที่สุดคือการอ่านและเข้าร่วมการพูดคุยเกี่ยวกับข้อเสนอ 2 รายการต่อไปนี้

ในระหว่างระยะการทดสอบ คุณสามารถลองฟังก์ชันการทำงานโดยใช้ตัวเลือก--use-first-party-set บรรทัดคำสั่งและระบุรายการเว็บไซต์ที่คั่นด้วยคอมมา

คุณสามารถลองใช้ฟีเจอร์นี้ในเว็บไซต์เดโมที่ https://fps-member1.glitch.me/ หลังจากเริ่ม Chrome ด้วย Flag ต่อไปนี้

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

ซึ่งจะมีประโยชน์หากคุณต้องการทดสอบในสภาพแวดล้อมการพัฒนา หรือต้องการลองเพิ่มแอตทริบิวต์ SameParty ในสภาพแวดล้อมจริงเพื่อดูว่าชุดของบุคคลที่หนึ่งจะส่งผลต่อคุกกี้อย่างไร

หากมีแบนด์วิดท์สำหรับการทดสอบและแสดงความคิดเห็น คุณสามารถลงชื่อสมัครใช้ช่วงทดลองใช้ต้นทางสำหรับชุดของบุคคลที่หนึ่งและ SameParty ซึ่งพร้อมให้บริการใน Chrome ตั้งแต่เวอร์ชัน 89 ถึง 93

วิธีอัปเดตคุกกี้สําหรับช่วงทดลองใช้ต้นทาง

หากคุณเข้าร่วมการทดสอบต้นทางและทดสอบแอตทริบิวต์ SameParty ในคุกกี้ โปรดพิจารณารูปแบบ 2 รูปแบบต่อไปนี้

ตัวเลือก 1

ขั้นแรก ให้เพิ่มแอตทริบิวต์ SameParty ลงในคุกกี้ที่ติดป้ายกํากับเป็น SameSite=None แต่คุณต้องการจํากัดให้ใช้ในบริบทของบุคคลที่หนึ่ง ในเบราว์เซอร์ที่มีการทดลองใช้แหล่งที่มาอยู่ ระบบจะไม่ส่งคุกกี้ในบริบทข้ามเว็บไซต์นอกชุด

อย่างไรก็ตาม สําหรับเบราว์เซอร์ส่วนใหญ่ที่อยู่นอกการทดสอบต้นทาง ระบบจะยังคงส่งคุกกี้ข้ามเว็บไซต์ตามปกติ โปรดพิจารณาว่านี่เป็นแนวทางการปรับปรุงแบบค่อยเป็นค่อยไป

ก่อน: set-cookie: cname=cval; SameSite=None; Secure

หลัง: set-cookie: cname=cval; SameSite=None; Secure; SameParty

ตัวเลือก 2

ตัวเลือกที่ 2 จะทำให้งานยุ่งยากขึ้น แต่จะช่วยให้คุณแยกการทดลองใช้ต้นทางออกจากฟังก์ชันการทำงานที่มีอยู่ได้อย่างสมบูรณ์ และอนุญาตให้ทดสอบการผสมผสานSameSite=Lax; SamePartyโดยเฉพาะ

ก่อน: set-cookie: cname=cval; SameSite=None; Secure

หลัง:

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

เมื่อตรวจสอบคุกกี้ในคําขอขาเข้า คุณควรเห็นเฉพาะคุกกี้ cname-fps ในคําขอข้ามเว็บไซต์หากเว็บไซต์ที่เกี่ยวข้องอยู่ในชุดและเบราว์เซอร์อยู่ในการทดสอบต้นทาง โปรดพิจารณาแนวทางนี้เหมือนกับการเปิดตัวฟีเจอร์ที่อัปเดตพร้อมกันก่อนที่จะปิดใช้เวอร์ชันก่อนหน้า

เหตุผลที่คุณอาจไม่จําเป็นต้องใช้ชุดของบุคคลที่หนึ่ง

สำหรับเว็บไซต์ส่วนใหญ่ ขอบเขตเว็บไซต์เป็นตำแหน่งที่ยอมรับได้สำหรับการวาดแบ่งเขตหรือขอบเขตความเป็นส่วนตัว นี่เป็นเส้นทางที่เสนอพร้อมกับ CHIPS (คุกกี้ที่มีสถานะแยกพาร์ติชันอิสระ) ซึ่งจะให้เส้นทางเลือกใช้แก่เว็บไซต์ผ่านแอตทริบิวต์ Partitioned เพื่อให้ยังคงมีการฝัง ทรัพยากร API และบริการข้ามเว็บไซต์ที่สำคัญเหล่านั้น ขณะเดียวกันก็ป้องกันการรั่วไหลของข้อมูลระบุตัวตนในเว็บไซต์ต่างๆ

สิ่งอื่นๆ ที่คุณควรพิจารณาซึ่งอาจทำให้เว็บไซต์ทำงานได้โดยไม่ต้องตั้งค่ามีดังนี้

  • คุณโฮสต์ในต้นทางที่แตกต่างกัน ไม่ใช่เว็บไซต์ที่แตกต่างกัน ในตัวอย่างข้างต้น หาก brandx.site มี fly.brandx.site และ drive.brandx.site แสดงว่าโดเมนย่อยเหล่านั้นเป็นโดเมนย่อยที่แตกต่างกันทั้งหมดภายในเว็บไซต์เดียวกัน คุกกี้สามารถใช้ SameSite=Lax ได้โดยไม่ต้องตั้งค่า
  • คุณให้การฝังของบุคคลที่สามแก่เว็บไซต์อื่นๆ ในอินโทร ตัวอย่างวิดีโอจาก video.site ที่ฝังใน my-blog.site เป็นการแบ่งส่วนของบุคคลที่สามอย่างชัดเจน เว็บไซต์ดังกล่าวดำเนินการโดยองค์กรต่างๆ และผู้ใช้จะเห็นว่าเว็บไซต์เหล่านั้นเป็นองค์กรที่แยกกัน เว็บไซต์ทั้ง 2 รายการไม่ควรอยู่ในชุดเดียวกัน
  • คุณให้บริการลงชื่อเข้าใช้ด้วยโซเชียลของบุคคลที่สาม ผู้ให้บริการข้อมูลประจำตัวที่ใช้ OAuth หรือ OpenId Connect มักใช้คุกกี้ของบุคคลที่สามเพื่อให้ผู้ใช้ลงชื่อเข้าใช้ได้อย่างราบรื่นยิ่งขึ้น นี่เป็นกรณีการใช้งานที่ถูกต้อง แต่ไม่เหมาะกับชุดของบุคคลที่หนึ่งเนื่องจากองค์กรมีความแตกต่างกันอย่างชัดเจน โปรเจ็กต์ระยะแรกๆ เช่น WebID กำลังหาวิธีเปิดใช้ Use Case เหล่านี้