วิธีการทดสอบชุดโดเมนของบุคคลที่หนึ่ง

ชุดโดเมนของบุคคลที่หนึ่งซึ่งทำการปรับปรุงครั้งล่าสุดพร้อมใช้งานแล้วสำหรับการทดสอบแฟล็กฟีเจอร์ของนักพัฒนาซอฟต์แวร์จาก Chrome 108 เรากําลังทํางานอย่างเต็มที่กับชุดโดเมนของบุคคลที่หนึ่ง โดยมีเป้าหมายที่จะขยายการให้บริการ จึงจะพิจารณาความคิดเห็นสําหรับการทดสอบระยะนี้ของนักพัฒนาแอปจนกระทั่งเปิดตัว Chrome 111 ในช่วงต้นเดือนมีนาคม (7 มีนาคม 2023)

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

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

ภาพรวมชุดโดเมนของบุคคลที่หนึ่ง

ชุดโดเมนของบุคคลที่หนึ่ง (FPS) เป็นกลไกแพลตฟอร์มเว็บสำหรับนักพัฒนาซอฟต์แวร์ในการประกาศความสัมพันธ์ระหว่างเว็บไซต์ต่างๆ เพื่อให้เบราว์เซอร์ใช้ข้อมูลนี้เพื่อเปิดใช้การเข้าถึงคุกกี้ข้ามเว็บไซต์แบบจำกัดสำหรับวัตถุประสงค์ที่เฉพาะเจาะจงซึ่งแสดงต่อผู้ใช้ Chrome จะใช้ความสัมพันธ์ที่ประกาศไว้เหล่านี้เพื่อตัดสินใจว่าจะอนุญาตหรือปฏิเสธให้เว็บไซต์เข้าถึงคุกกี้ของตนเมื่อใดในบริบทของบุคคลที่สาม

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

เราเสนอการใช้ Storage Access API (SAA) และ requestStorageAccessForOrigin เพื่อเปิดใช้การเข้าถึงคุกกี้ภายใน FPS เพื่อช่วยอำนวยความสะดวกในการจัดการเบราว์เซอร์ของแต่ละชุดย่อยตามผลกระทบด้านความเป็นส่วนตัวของแต่ละชุดย่อย

เมื่อใช้ SAA เว็บไซต์ต่างๆ อาจขอเข้าถึงคุกกี้ข้ามเว็บไซต์อย่างสม่ำเสมอ Chrome จะอนุมัติคำขอโดยอัตโนมัติหากเว็บไซต์ที่ส่งคำขอและเว็บไซต์ระดับบนสุดอยู่ใน FPS เดียวกัน โปรดดูเอกสารประกอบของ Storage Access API (SAA) สำหรับข้อมูลเกี่ยวกับวิธีที่เบราว์เซอร์อื่นประมวลผลการเรียกใช้ไปยัง SAA

ปัจจุบัน SAA กำหนดให้เอกสารต้องขอการเปิดใช้งานของผู้ใช้ก่อนเรียกใช้เมธอดของ API

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

ตั้งค่าการส่ง

รายการ Canonical FPS จะเป็นรายการแบบสาธารณะที่ดูได้ในรูปแบบไฟล์ JSON ซึ่งอยู่ในที่เก็บ GitHub ของ FPS ใหม่ ซึ่งจะเป็นแหล่งข้อมูลที่เชื่อถือได้สำหรับชุดทั้งหมด Chrome จะใช้ไฟล์นี้เพื่อนำไปใช้กับลักษณะการทำงานของไฟล์

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

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

วิธีทดสอบในเครื่อง

ข้อกำหนดเบื้องต้น

หากต้องการทดสอบ FPS ในเครื่อง ให้ใช้ Chrome 108 ขึ้นไปที่เปิดจากบรรทัดคำสั่ง

หากต้องการดูตัวอย่างฟีเจอร์ที่กำลังจะเปิดตัวของ Chrome ก่อนเปิดตัว ให้ดาวน์โหลด Chrome เวอร์ชันเบต้าหรือ Canary

ตัวอย่าง

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\"]}" \

ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีเรียกใช้ Chromium ด้วย Flag

ขั้นตอน

หากต้องการเปิดใช้ FPS ในเครื่อง คุณต้องใช้ตัวเลือก --enable-features ของ Chrome ซึ่งมีรายการ Flag ที่คั่นด้วยคอมมาซึ่งอธิบายไว้ในส่วนนี้และประกาศชุดเว็บไซต์ที่เกี่ยวข้องเป็นออบเจ็กต์ JSON ที่จะส่งต่อไปยัง --use-first-party-set

เปิดใช้ FPS

FirstPartySets เปิดใช้ FPS ใน Chrome

FirstPartySets

เปิดใช้ Storage Access API

StorageAccessAPI

เปิดใช้ Storage Access API (SAA) ใน Chrome ซึ่งจะอนุญาตให้ iframe แบบฝังใช้ requestStorageAccess() เพื่อขอสิทธิ์เข้าถึงคุกกี้ในบริบทแบบข้ามเว็บไซต์ แม้ว่าคุกกี้ของบุคคลที่สามจะถูกบล็อกโดยเบราว์เซอร์ก็ตาม

โปรดทราบว่าเมื่อมีการเรียกใช้ requestStorageAccess() ต้องใช้ท่าทางสัมผัสของผู้ใช้เพื่อแก้ไข Chrome เวอร์ชันต่อๆ ไปอาจมีชุดข้อกำหนดแตกต่างกัน เนื่องจากข้อกำหนดของ SAA ยังคงมีการพัฒนาอยู่เรื่อยๆ ดูรายการแผนการปรับปรุงการติดตั้งใช้งาน SAA ของ Chrome ได้ที่นี่

StorageAccessAPIForOriginExtension

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

ประกาศชุดในเครื่อง

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

สร้างออบเจ็กต์ JSON ที่มี URL ที่เป็นสมาชิกของชุดและส่งไปยัง --use-first-party-set

ในตัวอย่างด้านล่าง primary จะแสดงโดเมนหลัก และ associatedSites จะแสดงโดเมนที่เป็นไปตามข้อกำหนดของชุดย่อยที่เชื่อมโยง

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

ตัวอย่าง

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

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

เปิดใช้ UI ของ FPS

PageInfoCookiesSubpage

เปิดใช้การแสดง FPS ในส่วน PageInfo ที่เข้าถึงได้จากแถบ URL

PrivacySandboxFirstPartySetsUI

เปิดใช้ UI ของ FPS "อนุญาตให้เว็บไซต์ที่เกี่ยวข้องดูกิจกรรมของคุณในกลุ่ม" ในการตั้งค่า Chrome ใต้ความเป็นส่วนตัวและความปลอดภัย → คุกกี้และข้อมูลอื่นของเว็บไซต์ (chrome://settings/cookies)

ยืนยันว่าบล็อกคุกกี้ของบุคคลที่สามแล้ว

  1. ในการตั้งค่า Chrome ให้ไปที่ความเป็นส่วนตัวและความปลอดภัย → คุกกี้และข้อมูลเว็บไซต์อื่นๆ หรือ chrome://settings/cookies
  2. ในส่วนการตั้งค่าทั่วไป ให้ตรวจสอบว่า "บล็อกคุกกี้ของบุคคลที่สาม" ไว้
  3. ตรวจสอบว่าตัวเลือกย่อย "อนุญาตให้เว็บไซต์ที่เกี่ยวข้องดูกิจกรรมของคุณในกลุ่ม" เปิดใช้อยู่ได้ด้วย

ข้อควรพิจารณาด้านความปลอดภัย

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

การปรับปรุงที่วางแผนไว้

ในการปรับปรุงนี้ Chrome รุ่นต่อๆ ไปจะต้องมีการควบคุมการรักษาความปลอดภัยเพิ่มเติม โดยมีเป้าหมายเพื่อให้มั่นใจได้ว่าการเลือกรับ embeddee อย่างชัดเจน การปรับปรุงที่เสนอจะให้สิทธิ์เข้าถึงแบบรายเฟรมเท่านั้น กำหนดให้ CORS สำหรับคำขอข้อมูลเข้าสู่ระบบ และคงขอบเขตการเข้าถึงต้นทางเท่านั้น อ่านข้อมูลเพิ่มเติมได้ในการวิเคราะห์ความปลอดภัยล่าสุด

ดูรายการการปรับปรุงที่วางแผนไว้สำหรับการนำ SAA ของ Chrome มาใช้

โปรดทราบว่า Chrome จะส่งเฉพาะคุกกี้ที่มีเครื่องหมาย SameSite=None ในบริบทแบบฝังแบบข้ามเว็บไซต์ ซึ่งเป็นส่วนที่ Storage Access API มีความเกี่ยวข้อง อย่างไรก็ตาม ยังไม่มีข้อสันนิษฐานถึงที่ที่จะใช้คุกกี้จนกว่าเบราว์เซอร์ทั้งหมดจะเลิกใช้งานการเข้าถึงเริ่มต้นของคุกกี้เหล่านั้น โปรดอย่าสรุปเองว่าการเข้าถึงจะได้รับอนุญาตใน FPS เท่านั้น และเว็บไซต์ควรใช้แนวทางปฏิบัติแนะนำด้านความปลอดภัยแบบมาตรฐานต่อไป

มีส่วนร่วมและแชร์ความคิดเห็น

การทดสอบในเครื่องเป็นโอกาสในการลองใช้กลไก Storage Access API เพื่อเปิดใช้ FPS และแชร์ความคิดเห็นหรือปัญหาที่พบ นอกจากนี้ การทดสอบกระบวนการส่งเซ็ตใน GitHub ก็เป็นโอกาสในการแชร์ประสบการณ์เกี่ยวกับขั้นตอนและขั้นตอนการตรวจสอบ หากต้องการมีส่วนร่วมและแชร์ความคิดเห็นเกี่ยวกับข้อเสนอที่อัปเดต ให้ทำดังนี้