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

Yifan Luo
Yifan Luo

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

สิ่งที่เปลี่ยนแปลง

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

การเข้าถึงเครือข่ายส่วนตัวคืออะไร

การเข้าถึงเครือข่ายส่วนตัว (PNA ซึ่งก่อนหน้านี้เรียกว่า CORS-RFC1918 หรือเรียกสั้นๆ ว่าการเข้าถึงเครือข่ายภายใน) เป็นคุณลักษณะความปลอดภัยที่จำกัดความสามารถของเว็บไซต์ในการส่งคำขอไปยังเซิร์ฟเวอร์ในเครือข่ายส่วนตัว ซึ่งจะช่วยปกป้องผู้ใช้และเครือข่ายภายในจากการโจมตีที่อาจเกิดขึ้น เช่น Cross-Site Request Forgery (CSRF) Chrome ได้ทยอยนำ PNA ไปใช้งาน และจะเพิ่มการปกป้องในรุ่นที่กำลังจะเปิดตัว

เหตุใดจึงต้องมีข้อความแจ้งสิทธิ์

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

เพื่อแก้ปัญหานี้ เราจึงได้เพิ่มข้อความแจ้งสิทธิ์ใหม่ภายใต้ช่วงทดลองใช้จากต้นทางจาก Chrome 120 และใน Chrome 124 ในเวอร์ชันเสถียร

เมื่อใดที่จำเป็นต้องขอสิทธิ์

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

เวิร์กโฟลว์ทั่วไปสำหรับคำขอเข้าถึงเครือข่ายส่วนตัวที่มีข้อความแจ้งสิทธิ์มีดังนี้

แสดงข้อความแจ้งเกี่ยวกับสิทธิ์

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

fetch("http://router.local/ping", {
  targetAddressSpace: "private",
});

เพื่อให้เป็นไปตามการเข้าถึงเครือข่ายส่วนตัว: เริ่มใช้การตรวจสอบล่วงหน้า คำขอเครือข่ายส่วนตัวจะมีคำขอการตรวจสอบล่วงหน้าอยู่ข้างหน้า คำขอการตรวจสอบล่วงหน้านี้จะมีส่วนหัวใหม่ Access-Control-Request-Private-Network: true และการตอบกลับที่เกี่ยวข้องต้องมีส่วนหัว Access-Control-Allow-Private-Network: true

อุปกรณ์ต้องรวมส่วนหัวการตอบกลับใหม่ 2 รายการคือ Private-Network-Access-Name และ Private-Network-Access-ID เพื่อรองรับข้อความแจ้งสิทธิ์ใหม่

  • Private-Network-Access-ID: ค่า 48 บิตที่แสดงเป็นไบต์ฐานสิบหก 6 ไบต์ ที่คั่นด้วยโคลอน
  • Private-Network-Access-Name: ชื่อที่ถูกต้องเป็นสตริง ที่ตรงกับนิพจน์ทั่วไป ECMAScript /^[a-z0-9_-.]+$/. ความยาวสูงสุดของชื่อคือ 248 หน่วยโค้ด UTF-8
Private-Network-Access-Name: "My Smart Toothbrush"
Private-Network-Access-ID: "01:23:45:67:89:0A"

ข้อมูลประชากร

ดูเดโมได้ที่ https://private-network-access-permission-test.glitch.me/

คุณต้องเริ่มต้นเซิร์ฟเวอร์ส่วนตัวส่วนตัวเพื่อใช้เว็บไซต์เดโม เซิร์ฟเวอร์ส่วนตัวควรตอบกลับด้วยส่วนหัว HTTP Access-Control-Allow-Private-Network: true พร้อมด้วยส่วนหัว Private-Network-Access-ID และ Private-Network-Access-Name ที่เซิร์ฟเวอร์ระบุ หากตั้งค่าทุกอย่างถูกต้อง ข้อความแจ้งสิทธิ์ต่อไปนี้ควรจะแสดง

ออกจากการทดลองใช้การเลิกใช้งานบริบทที่ไม่ปลอดภัย

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

หลังจากอัปเดตโค้ดแล้ว ให้ลบโทเค็นการทดลองใช้ในส่วนหัว HTML, JavaScript หรือ HTTP หากคุณจำไม่ได้ว่าใส่โทเค็นการทดลองใช้ไว้ที่ไหน โปรดดูส่วนลงทะเบียนเพื่อทดลองใช้การเลิกใช้งานในบล็อกโพสต์ก่อนหน้า

โดยคุณอาจต้องลบโทเค็นในหน้าการทดลองใช้ด้วย

ขั้นตอนถัดไปคือ

โซลูชันสำหรับคำขอจาก fetch() ที่ไม่ใช่ API ยังอยู่ระหว่างการสำรวจ

โซลูชันต่างๆ ได้รับการทดสอบแล้ว เช่น การใช้ Service Worker หรือการสร้างพื้นที่ที่อยู่เป้าหมายเป็นนโยบายรักษาความปลอดภัยเนื้อหาแบบใหม่ แต่รูปร่างสุดท้ายของคําขอจาก fetch() ที่ไม่ใช่ API ยังอยู่ระหว่างการตรวจสอบ

คำขอจากเฟรมย่อยอาจได้รับการสนับสนุนด้วยนโยบายสิทธิ์ในอนาคต

ในอนาคต เราอาจต้องการสนับสนุนนโยบายสิทธิ์เพื่อผ่อนปรนความสามารถของเฟรมย่อย

ความคิดเห็นเกี่ยวกับกรณีการใช้งานเครือข่ายส่วนตัว

หากคุณโฮสต์เว็บไซต์บนเครือข่ายส่วนตัวที่ต้องการคำขอจากเครือข่ายสาธารณะ ทีม Chrome ต้องการความคิดเห็นจากคุณ รายงานปัญหาที่ เครื่องมือติดตามปัญหา Chromium (component: Blink>SecurityFeature>CORS>PrivateNetworkAccess) หรือใน ที่เก็บของ GitHub

แหล่งข้อมูล