คำจำกัดความของ "เว็บไซต์เดียวกัน" กำลังพัฒนาให้รวมรูปแบบ URL ด้วย ดังนั้นลิงก์ระหว่างเว็บไซต์เวอร์ชัน HTTP และ HTTPS จะนับเป็นคำขอข้ามเว็บไซต์แล้ว อัปเกรดเป็น HTTPS โดยค่าเริ่มต้นเพื่อหลีกเลี่ยงปัญหาที่อาจเกิดขึ้น หรืออ่านรายละเอียดเกี่ยวกับค่าแอตทริบิวต์ SameSite ที่จำเป็น
Schemeful Same-Site จะแก้ไขคำจำกัดความของเว็บไซต์ (เว็บ) จากโดเมนที่จดทะเบียนได้เท่านั้นเป็น รูปแบบ + โดเมนที่จดทะเบียนได้ ดูรายละเอียดและตัวอย่างเพิ่มเติมได้ใน หัวข้อทำความเข้าใจ "เว็บไซต์เดียวกัน" และ "ต้นทางเดียวกัน"
ข่าวดีก็คือ หากเว็บไซต์ของคุณอัปเกรดเป็น HTTPS อย่างสมบูรณ์แล้ว คุณก็ไม่ต้องกังวลใดๆ เพราะไม่มีอะไรเปลี่ยนแปลงสำหรับคุณ
หากคุณยังไม่ได้อัปเกรดเว็บไซต์อย่างสมบูรณ์ คุณควรให้ความสำคัญกับการดำเนินการนี้
อย่างไรก็ตาม หากผู้เข้าชมเว็บไซต์ของคุณสลับไปมาระหว่าง HTTP กับ HTTPS ในบางกรณี เราจะสรุปสถานการณ์ที่พบบ่อยบางสถานการณ์และลักษณะการทำงานของคุกกี้ SameSite ที่เกี่ยวข้องไว้ในส่วนท้ายของบทความนี้
คุณสามารถเปิดใช้การเปลี่ยนแปลงเหล่านี้เพื่อทดสอบในทั้ง Chrome และ Firefox
- ใน Chrome เวอร์ชัน 86 ขึ้นไป ให้เปิดใช้
about://flags/#schemeful-same-siteติดตามความคืบหน้า ในหน้าสถานะของ Chrome - ใน Firefox เวอร์ชัน 79 ขึ้นไป ให้ตั้งค่า
network.cookie.sameSite.schemefulเป็นtrueผ่านabout:configติดตามความคืบหน้าโดยใช้ ปัญหา Bugzilla
เหตุผลหลักอย่างหนึ่งที่เปลี่ยนค่าเริ่มต้นของ
คุกกี้เป็น SameSite=Lax ก็คือเพื่อป้องกันการปลอมแปลงคำขอแบบข้ามเว็บไซต์
(CSRF) อย่างไรก็ตาม การเข้าชม HTTP ที่ไม่ปลอดภัยยังคงเป็นโอกาสให้ผู้โจมตีเครือข่ายแก้ไขคุกกี้ที่จะใช้ในเว็บไซต์เวอร์ชัน HTTPS ที่ปลอดภัย การสร้างขอบเขตข้ามเว็บไซต์เพิ่มเติมระหว่างรูปแบบจะช่วยป้องกันการโจมตีเหล่านี้ได้มากขึ้น
สถานการณ์ที่พบบ่อยในการใช้รูปแบบที่แตกต่างกัน
การนำทาง
ก่อนหน้านี้ การนำทางระหว่างเว็บไซต์เวอร์ชันข้ามรูปแบบ (เช่น การลิงก์จาก
http://site.example ไปยัง https://site.example) จะอนุญาตให้ส่งคุกกี้ได้
SameSite=Strict แต่ตอนนี้ระบบจะถือว่าเป็นการนำทางข้ามเว็บไซต์ ซึ่งหมายความว่าจะมีการบล็อกคุกกี้ SameSite=Strict
| HTTP → HTTPS | HTTPS → HTTP | |
SameSite=Strict
|
⛔ บล็อก | ⛔ บล็อก |
SameSite=Lax
|
✓ อนุญาต | ✓ อนุญาต |
SameSite=None;Secure
|
✓ อนุญาต | ⛔ บล็อก |
การโหลดทรัพยากรย่อย
การเปลี่ยนแปลงใดๆ ที่คุณทำที่นี่ควรพิจารณาเป็นเพียงการแก้ไขชั่วคราวในขณะที่คุณพยายามอัปเกรดเป็น HTTPS อย่างสมบูรณ์
ตัวอย่างทรัพยากรย่อย ได้แก่ รูปภาพ, iframe และคำขอเครือข่ายที่สร้างด้วย XHR หรือ Fetch
ก่อนหน้านี้ การโหลดทรัพยากรย่อยข้ามรูปแบบในหน้าเว็บจะอนุญาตให้ส่งหรือตั้งค่าคุกกี้ SameSite=Strict หรือ SameSite=Lax ได้ แต่ตอนนี้ระบบจะถือว่าเป็นการโหลดทรัพยากรย่อยของบุคคลที่สามหรือข้ามเว็บไซต์อื่นๆ ซึ่งหมายความว่าจะมีการบล็อกคุกกี้ SameSite=Strict หรือ SameSite=Lax
นอกจากนี้ แม้ว่าเบราว์เซอร์จะอนุญาตให้โหลดทรัพยากรจากรูปแบบที่ไม่ปลอดภัยในหน้าเว็บที่ปลอดภัย แต่ระบบจะบล็อกคุกกี้ทั้งหมดในคำขอเหล่านี้ เนื่องจากคุกกี้ของบุคคลที่สามหรือคุกกี้ข้ามเว็บไซต์ต้องมีแอตทริบิวต์ Secure
| HTTP → HTTPS | HTTPS → HTTP | |
SameSite=Strict
|
⛔ บล็อก | ⛔ บล็อก |
SameSite=Lax
|
⛔ บล็อก | ⛔ บล็อก |
SameSite=None;Secure
|
✓ อนุญาต | ⛔ บล็อก |
การ POST แบบฟอร์ม
ก่อนหน้านี้ การ POST ระหว่างเว็บไซต์เวอร์ชันข้ามรูปแบบจะอนุญาตให้ส่งคุกกี้ที่ตั้งค่าด้วย SameSite=Lax หรือ SameSite=Strict ได้ แต่ตอนนี้ระบบจะถือว่าเป็นการ POST ข้ามเว็บไซต์ ซึ่งจะส่งได้เฉพาะคุกกี้ SameSite=None คุณอาจพบสถานการณ์นี้ในเว็บไซต์ที่แสดงเวอร์ชันที่ไม่ปลอดภัยโดยค่าเริ่มต้น แต่จะอัปเกรดผู้ใช้เป็นเวอร์ชันที่ปลอดภัยเมื่อมีการส่งแบบฟอร์มลงชื่อเข้าใช้หรือแบบฟอร์มชำระเงิน
เช่นเดียวกับทรัพยากรย่อย หากคำขอมาจากบริบทที่ปลอดภัย (เช่น HTTPS) ไปยังบริบทที่ไม่ปลอดภัย (เช่น HTTP) ระบบจะบล็อกคุกกี้ทั้งหมดในคำขอเหล่านี้ เนื่องจากคุกกี้ของบุคคลที่สามหรือคุกกี้ข้ามเว็บไซต์ต้องมีแอตทริบิวต์ Secure
| HTTP → HTTPS | HTTPS → HTTP | |
SameSite=Strict
|
⛔ บล็อก | ⛔ บล็อก |
SameSite=Lax
|
⛔ บล็อก | ⛔ บล็อก |
SameSite=None;Secure
|
✓ อนุญาต | ⛔ บล็อก |
ฉันจะทดสอบเว็บไซต์ได้อย่างไร
เครื่องมือสำหรับนักพัฒนาเว็บและการแสดงข้อความมีให้บริการใน Chrome และ Firefox
ใน Chrome เวอร์ชัน 86 ขึ้นไป แท็บปัญหาใน เครื่องมือสำหรับนักพัฒนาเว็บจะ รวมปัญหา Schemeful Same-Site คุณอาจเห็นปัญหาต่อไปนี้ที่ไฮไลต์ไว้สำหรับเว็บไซต์
ปัญหาการนำทาง
- "ย้ายข้อมูลทั้งหมดไปใช้ HTTPS เพื่อให้ระบบส่งคุกกี้ในคำขอเว็บไซต์เดียวกันต่อไปได้" - คำเตือนว่าระบบจะ บล็อกคุกกี้ใน Chrome เวอร์ชันถัดไป
- "ย้ายข้อมูลทั้งหมดไปใช้ HTTPS เพื่อให้ระบบส่งคุกกี้ในคำขอเว็บไซต์เดียวกันได้" - คำเตือนว่าระบบได้ บล็อกคุกกี้แล้ว
ปัญหาการโหลดทรัพยากรย่อย
- "ย้ายข้อมูลทั้งหมดไปใช้ HTTPS เพื่อให้ระบบส่งคุกกี้ไปยังทรัพยากรย่อยของเว็บไซต์เดียวกันต่อไปได้" หรือ "ย้ายข้อมูลทั้งหมดไปใช้ HTTPS เพื่อให้ทรัพยากรย่อยของเว็บไซต์เดียวกันตั้งค่าคุกกี้ต่อไปได้" - คำเตือนว่าระบบจะ บล็อกคุกกี้ใน Chrome เวอร์ชันถัดไป
- "ย้ายข้อมูลทั้งหมดไปใช้ HTTPS เพื่อให้ระบบส่งคุกกี้ไปยังทรัพยากรย่อยของเว็บไซต์เดียวกันได้" หรือ "ย้ายข้อมูลทั้งหมดไปใช้ HTTPS เพื่อให้ทรัพยากรย่อยของเว็บไซต์เดียวกันตั้งค่าคุกกี้ได้" - คำเตือนว่าระบบได้ บล็อกคุกกี้แล้ว คำเตือนหลังยังอาจปรากฏขึ้นเมื่อมีการ POST แบบฟอร์ม
ดูรายละเอียดเพิ่มเติมได้ในเคล็ดลับการทดสอบและการแก้ไขข้อบกพร่องสำหรับ Schemeful Same-Site
ใน Firefox เวอร์ชัน 79 ขึ้นไป หากตั้งค่า network.cookie.sameSite.schemeful เป็น true ผ่าน about:config คอนโซลจะแสดงข้อความสำหรับปัญหา Schemeful Same-Site
คุณอาจเห็นข้อความต่อไปนี้ในเว็บไซต์
- "ระบบจะ ถือว่าคุกกี้
cookie_nameเป็นคุกกี้ข้ามเว็บไซต์กับhttp://site.example/ในเร็วๆ นี้ เนื่องจากรูปแบบไม่ตรงกัน" - "ระบบได้ ถือว่าคุกกี้
cookie_nameเป็นคุกกี้ข้ามเว็บไซต์กับhttp://site.example/เนื่องจากรูปแบบไม่ตรงกัน"
คำถามที่พบบ่อย
เว็บไซต์ของฉันพร้อมใช้งานใน HTTPS อย่างสมบูรณ์แล้ว เหตุใดฉันจึงเห็นปัญหาในเครื่องมือสำหรับนักพัฒนาเว็บของเบราว์เซอร์
เป็นไปได้ว่าลิงก์และทรัพยากรย่อยบางรายการยังคงชี้ไปยัง URL ที่ไม่ปลอดภัย
วิธีหนึ่งในการแก้ไขปัญหานี้คือการใช้ HTTP Strict-Transport-Security
(HSTS) และคำสั่ง includeSubDomain เมื่อใช้ HSTS + includeSubDomain แม้ว่าหน้าเว็บหน้าใดหน้าหนึ่งจะมีลิงก์ที่ไม่ปลอดภัยโดยไม่ได้ตั้งใจ เบราว์เซอร์ก็จะใช้เวอร์ชันที่ปลอดภัยโดยอัตโนมัติ
ฉันควรทำอย่างไรหากอัปเกรดเป็น HTTPS ไม่ได้
แม้ว่าเราจะขอแนะนำให้คุณอัปเกรดเว็บไซต์ทั้งหมดเป็น HTTPS เพื่อปกป้องผู้ใช้ แต่หากคุณดำเนินการเองไม่ได้ เราขอแนะนำให้พูดคุยกับผู้ให้บริการโฮสติ้งเพื่อดูว่ามีตัวเลือกดังกล่าวหรือไม่ หากคุณโฮสต์เอง แล้ว Let's Encrypt มีเครื่องมือมากมายสำหรับ ติดตั้งและกำหนดค่าใบรับรอง นอกจากนี้ คุณยังพิจารณาย้ายเว็บไซต์ไปไว้หลัง CDN หรือพร็อกซีอื่นๆ ที่สามารถให้การเชื่อมต่อ HTTPS ได้ด้วย
หากยังทำไม่ได้ ให้ลองลดการป้องกัน SameSite ในคุกกี้ที่ได้รับผลกระทบ
- ในกรณีที่ระบบบล็อกเฉพาะคุกกี้
SameSite=Strictคุณสามารถลดการป้องกันเป็นLaxได้ - ในกรณีที่ระบบบล็อกทั้งคุกกี้
StrictและLaxและระบบส่ง (หรือตั้งค่า) คุกกี้ไปยัง URL ที่ปลอดภัย คุณสามารถลดการป้องกันเป็นNoneได้- วิธีแก้ปัญหานี้จะล้มเหลว หาก URL ที่คุณส่งคุกกี้ไป (หรือตั้งค่าคุกกี้จาก URL นั้น) ไม่ปลอดภัย เนื่องจาก
SameSite=Noneต้องมีแอตทริบิวต์Secureในคุกกี้ ซึ่งหมายความว่าระบบอาจไม่ส่งหรือตั้งค่าคุกกี้เหล่านั้นผ่านการเชื่อมต่อที่ไม่ปลอดภัย ในกรณีนี้ คุณจะเข้าถึงคุกกี้นั้นไม่ได้จนกว่าเว็บไซต์จะอัปเกรดเป็น HTTPS - โปรดทราบว่านี่เป็นเพียงการแก้ปัญหาชั่วคราว เนื่องจากในที่สุดระบบจะเลิกใช้คุกกี้ของบุคคลที่สามทั้งหมด
- วิธีแก้ปัญหานี้จะล้มเหลว หาก URL ที่คุณส่งคุกกี้ไป (หรือตั้งค่าคุกกี้จาก URL นั้น) ไม่ปลอดภัย เนื่องจาก
การเปลี่ยนแปลงนี้จะส่งผลต่อคุกกี้ของฉันอย่างไรหากฉันไม่ได้ระบุแอตทริบิวต์ SameSite
ระบบจะถือว่าคุกกี้ที่ไม่มีแอตทริบิวต์ SameSite ระบุ
SameSite=Lax และลักษณะการทำงานข้ามรูปแบบเดียวกันนี้จะมีผลกับคุกกี้เหล่านี้ด้วย
โปรดทราบว่าข้อยกเว้นชั่วคราวสำหรับเมธอดที่ไม่ปลอดภัยยังคงมีผลอยู่ โปรดดูข้อมูลเพิ่มเติมที่
การลดความเสี่ยง Lax + POST ในคำถามที่พบบ่อยเกี่ยวกับ Chromium SameSite
WebSocket จะได้รับผลกระทบอย่างไร
ระบบจะยังคงถือว่าการเชื่อมต่อ WebSocket เป็นเว็บไซต์เดียวกันหากมีความปลอดภัยระดับเดียวกับหน้าเว็บ
เว็บไซต์เดียวกัน
- การเชื่อมต่อ
wss://จากhttps:// - การเชื่อมต่อ
ws://จากhttp://
ข้ามเว็บไซต์
- การเชื่อมต่อ
wss://จากhttp:// - การเชื่อมต่อ
ws://จากhttps://