การเข้าถึงเครือข่ายส่วนตัวคืออะไร
การเข้าถึงเครือข่ายส่วนตัว (PNA หรือเดิมเรียกว่า CORS-RFC1918 และเรียกสั้นๆ ว่า "การเข้าถึงเครือข่าย LAN") เป็นฟีเจอร์ด้านความปลอดภัยที่จำกัดความสามารถของเว็บไซต์ในการส่งคำขอไปยังเซิร์ฟเวอร์ในเครือข่ายส่วนตัว ซึ่งจะช่วยปกป้องผู้ใช้และเครือข่ายภายในจากการโจมตีที่อาจเกิดขึ้น เช่น การปลอมแปลงคำขอข้ามเว็บไซต์ (CSRF) Chrome ค่อยๆ ใช้งาน PNA และเราจะขยายการป้องกันในรุ่นที่กำลังจะเปิดตัว
การป้องกัน PNA ที่สําคัญ (พร้อมสถานะปัจจุบัน)
- บริบทที่ปลอดภัย: เฉพาะบริบทที่ปลอดภัยเท่านั้นที่อนุญาตให้ส่งคำขอทรัพยากรย่อยของเครือข่ายส่วนตัว (มีผลบังคับใช้ตั้งแต่ Chrome 94) ดูรายละเอียดได้ในโพสต์การอัปเดตการเข้าถึงเครือข่ายส่วนตัว
- คำขอ Preflight: Chrome จะส่งคำขอ Preflight ก่อนคำขอทรัพยากรย่อยของเครือข่ายส่วนตัวเพื่อตรวจสอบสิทธิ์ของเซิร์ฟเวอร์ (คำเตือนในเครื่องมือสำหรับนักพัฒนาเว็บสำหรับความล้มเหลวตั้งแต่ Chrome 104 เป็นต้นไป ซึ่งจะมีผลบังคับใช้ใน Chrome 130) เราได้อธิบายเรื่องนี้ไว้ในการเข้าถึงเครือข่ายส่วนตัว: ขอแนะนำช่วงก่อนเที่ยวบิน ตั้งแต่ Chrome 123 เป็นต้นไป Chrome จะละเว้นส่วนหัว CORS บางรายการ เช่น
Accept
หากสร้างและส่งการขอสิทธิ์ก่อนการทํางานเนื่องจาก PNA เท่านั้น - การยกเว้นต้นทางเดียวกัน: ตั้งแต่ Chrome 115 เป็นต้นไป คำขอจากต้นทางเดียวกันซึ่งอาจเชื่อถือได้จะได้รับการยกเว้นจากข้อจำกัด PNA
การปกป้องเพิ่มเติม: เวิร์กเกอร์บนเว็บ
การป้องกัน PNA จะขยายไปยัง Web Worker (Worker โดยเฉพาะ, Worker ที่แชร์ และ Service Worker) ซึ่งรวมถึงเนื้อหาต่อไปนี้
- การดึงข้อมูลสคริปต์สำหรับโหนดงาน: ต้องใช้บริบทที่ปลอดภัยและการตรวจสอบเบื้องต้นสำหรับที่อยู่ IP สาธารณะน้อย คำเตือนตั้งแต่ Chrome 110 เป็นต้นไป ซึ่งจะมีผลบังคับใช้ใน Chrome 130
- การดึงข้อมูลเริ่มต้นโดยสคริปต์ผู้ปฏิบัติงาน: การดึงข้อมูลทั้งหมดจากภายในสคริปต์ผู้ปฏิบัติงานจะเป็นไปตามกฎ PNA เดียวกัน
ตั้งแต่ Chrome 124 เป็นต้นไป คุณสามารถทดสอบการบังคับใช้ได้โดยทำตามขั้นตอนต่อไปนี้
- ปิดใช้งาน
chrome://flags/#private-network-access-ignore-worker-errors
- เปิดใช้
chrome://flags/#private-network-access-respect-preflight-results
การปกป้องเพิ่มเติม: การดึงข้อมูลการนำทาง
PNA ยังใช้กับการดึงข้อมูลการนําทาง (iframe, ป๊อปอัป) ด้วยเนื่องจากมีแนวโน้มที่จะใช้ในการโจมตี CSRF Chrome 123 เริ่มแสดงคำเตือนสำหรับการไม่ผ่านการตรวจสอบ โดยมีแผนจะบังคับใช้ใน Chrome 130
ตั้งแต่ Chrome 124 เป็นต้นไป คุณสามารถทดสอบการบังคับใช้ได้โดยทำดังนี้
- ปิดใช้งาน
chrome://flags/#private-network-access-ignore-navigation-errors
- เปิดใช้
chrome://flags/#private-network-access-respect-preflight-results
เมื่อ PNA บล็อกคำขอไปยังส่วนต่างๆ ผู้ใช้จะเห็นข้อผิดพลาดที่เฉพาะเจาะจงพร้อมตัวเลือกในการโหลดซ้ำและอนุญาตคำขอด้วยตนเอง

จะทำอย่างไรหากเว็บไซต์ได้รับผลกระทบ
โพสต์การเข้าถึงเครือข่ายส่วนตัว: แนะนำช่วงก่อนบินมีคำแนะนำ สิ่งสำคัญสำหรับคำขอการนำทาง
Access-Control-Allow-Origin
ต้องไม่ใช่ไวลด์การ์ด ("*"
)- ต้องตั้งค่า
Access-Control-Allow-Credentials
เป็น"true"
ขั้นตอนถัดไปคือ
- WebSockets: PNA จะครอบคลุมแฮนด์เชค WebSocket (คำเตือนก่อน) โดยจะเริ่มตั้งแต่ Chrome 126 เป็นต้นไป
- การบังคับใช้อย่างเต็มรูปแบบ: ระบบจะบังคับใช้ข้อจำกัด PNA ทั้งหมด (บล็อกคำขอที่ไม่เป็นไปตามข้อกำหนด) ใน Chrome 130 โดยประมาณ ผู้ใช้จะมีการตั้งค่าเว็บไซต์เพื่อลบล้าง PNA สำหรับเว็บไซต์ที่เชื่อถือ
ความคิดเห็นสำหรับกรณีการใช้งานเครือข่ายส่วนตัว
หากคุณโฮสต์เว็บไซต์ในเครือข่ายส่วนตัวที่ต้องใช้คำขอจากเครือข่ายสาธารณะ ทีม Chrome ต้องการความคิดเห็นจากคุณ รายงานปัญหาที่เครื่องมือติดตามปัญหา Chromium (คอมโพเนนต์: Blink>SecurityFeature>CORS>PrivateNetworkAccess)
รูปภาพโดย Jakub Żerdzicki จาก Unsplash