ค่าใหม่ของ sandbox allow-same-site-none-cookies จาก Chrome 135

Natalia Markoborodova
Natalia Markoborodova

ตั้งแต่ 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