ตั้งแต่ Chrome 135 เป็นต้นไป คุณจะใช้ค่า sandbox ใหม่ได้
allow-same-site-none-cookies เมื่อระบุนโยบายนี้และไม่มีคุกกี้ของบุคคลที่สาม
เบราว์เซอร์จะส่งเฉพาะคุกกี้ SameSite=None ใน
คำขอ HTTP ที่มาจาก iframe แบบแซนด์บ็อกซ์ของบุคคลที่หนึ่ง
iframe ที่ทำแซนด์บ็อกซ์คืออะไร
iframe ที่แซนด์บ็อกซ์คือ iframe ที่มี
ข้อจำกัดพิเศษ ระบบจะถือว่ามีต้นทางnull
แบบทึบแสง
โดยค่าเริ่มต้น ฟีเจอร์ที่อาจเป็นอันตราย เช่น สคริปต์ แบบฟอร์ม และป๊อปอัป
จะใช้ไม่ได้ภายใน iframe ที่ทำแซนด์บ็อกซ์
ใช้แอตทริบิวต์ sandbox เพื่อ
ระบุ
ฟีเจอร์ที่ iframe แบบแซนด์บ็อกซ์ควรมี เช่น
<iframe sandbox="allow-scripts" src="example-sandboxed-frame.html"/>
การแซนด์บ็อกซ์เป็นแนวคิดที่ดีเสมอ เนื่องจากช่วยให้คุณเลือกสิทธิ์ที่จำเป็นสำหรับเนื้อหาที่ฝังเพื่อโหลดให้สำเร็จได้อย่างละเอียด ในขณะเดียวกันก็จำกัดขอบเขตของการใช้ประโยชน์ที่อาจเกิดขึ้น
เหตุใดเราจึงต้องมีนโยบายใหม่นี้
ก่อนที่จะเปิดตัว allow-same-site-none-cookies คุณสามารถกำหนดค่า
สถานการณ์คุกกี้ 2 แบบภายใน iframe ที่ทำแซนด์บ็อกซ์ได้
- หากไม่มีโทเค็น
allow-same-originในแอตทริบิวต์sandboxต้นทางของ iframe จะได้รับการซีเรียลไลซ์เป็นnullซึ่งทำให้คำขอทั้งหมดจากหน้าเว็บที่อยู่ในแซนด์บ็อกซ์เป็นแบบข้ามเว็บไซต์ ในกรณีนี้ ระบบจะรวมเฉพาะคุกกี้ที่มีSameSite=Noneไว้ในคำขอ - เมื่อมีโทเค็น
allow-same-originในแอตทริบิวต์sandboxระบบจะถือว่าคำขอมาจากต้นทางจริงของ iframe ซึ่งจะอนุญาตให้ส่งคุกกี้ที่มีค่าSameSiteใดก็ได้
เมื่อบล็อกคุกกี้ของบุคคลที่สาม iframe ที่แซนด์บ็อกซ์ซึ่งไม่มี allow-same-origin
จะส่งคุกกี้ไม่ได้ เว้นแต่คุณจะเปิดใช้ allow-same-site-none-cookies
iframe ที่มี allow-same-origin จะยังคงรวมคุกกี้ไว้ในคำขอแบบเดียวกันได้ แม้ว่าจะมีการบล็อกคุกกี้ของบุคคลที่สามก็ตาม อย่างไรก็ตาม ระบบจะแสดงที่เก็บคุกกี้ของต้นทางทั้งหมดต่อกิจกรรมบนเว็บที่อาจเป็นอันตราย
เมื่อใช้ allow-same-site-none-cookies, iframe จะส่งคุกกี้ SameSite=None
ในคำขอ HTTP ได้ แต่จะไม่รวมคุกกี้ SameSite=Strict และ
SameSite=Lax ซึ่งอาจมีความละเอียดอ่อน
ตัวอย่างการใช้งานจริง
ลองพิจารณาเว็บไซต์ practice-coding.example ที่อนุญาตให้ผู้ใช้สร้างและเรียกใช้
โปรเจ็กต์การเขียนโค้ดที่กำหนดเอง รวมถึงฝังโค้ดของผู้ใช้รายอื่น หากต้องการใช้บริการ ผู้ใช้ต้องลงชื่อเข้าใช้ ซึ่งจะทำให้มีการตั้งค่าคุกกี้เซสชันของ SameSite=Strict
ผู้ใช้รายอื่นสร้างโปรเจ็กต์ practice-coding.example/cookie-theft ซึ่ง
ผู้ใช้รายอื่นๆ อาจฝังเป็น iframe ในโปรเจ็กต์ของตนโดยไม่รู้ตัว หากมีการเปิดเผยคุกกี้
SameSite=Strict และ SameSite=Lax ต่อ iframe ของ
practice-coding.example/cookie-theft ผู้ใช้ที่เป็นอันตรายอาจขโมยคุกกี้เซสชันของผู้ใช้รายอื่นได้
ในสถานการณ์นี้ เจ้าของเว็บไซต์อาจต้องการจำกัดการเข้าถึงคุกกี้ที่อาจมีความละเอียดอ่อน อย่างไรก็ตาม ผู้เผยแพร่โฆษณาอาจยังต้องการอนุญาตคุกกี้ SameSite=None
ภายใน iframe ที่แซนด์บ็อกซ์ ตัวอย่างเช่น
practice-coding.example/coding-interview iframe ที่แซนด์บ็อกซ์อาจต้องใช้
SameSite=Noneคุกกี้เพื่อให้ผู้สมัครกลับมาดูโค้ดของตนได้
allow-same-site-none-cookies ป้องกันไม่ให้เปิดเผยที่เก็บคุกกี้ทั้งหมดในขณะที่
อนุญาตคุกกี้ SameSite=None ที่จำเป็นอย่างจำกัด
ฉันจะอนุญาตให้ใช้เฉพาะ SameSite=None ภายในเฟรมแซนด์บ็อกซ์ของบุคคลที่หนึ่งได้อย่างไร
หากต้องการเปิดใช้SameSite=Noneคุกกี้ในคำขอจากหน้าแซนด์บ็อกซ์ของบุคคลที่หนึ่ง
ให้ระบุโทเค็น allow-same-site-none-cookies ในแท็ก iframe เช่น
<iframe sandbox="allow-same-site-none-cookies" src="example-sandboxed-page.html"/>
นอกจากนี้ คุณยังตั้งค่านโยบาย allow-same-site-none-cookies ด้วยส่วนหัว HTTP
Content-Security-Policy ได้ด้วย
Content-Security-Policy: sandbox allow-same-site-none-cookies;
ลองใช้ด้วยตัวคุณเองด้วยเดโมของเรา
มีส่วนร่วมและแชร์ความคิดเห็น
แจ้งปัญหาเพื่อแชร์ความคิดเห็นหรือรายงานปัญหา หรือเข้าร่วมการสนทนาใน GitHub