การเข้าถึงเครือข่ายส่วนตัวคืออะไร
การเข้าถึงเครือข่ายส่วนตัว (PNA ซึ่งก่อนหน้านี้เรียกว่า CORS-RFC1918 หรือเรียกสั้นๆ ว่าการเข้าถึงเครือข่ายภายใน) เป็นคุณลักษณะความปลอดภัยที่จำกัดความสามารถของเว็บไซต์ในการส่งคำขอไปยังเซิร์ฟเวอร์ในเครือข่ายส่วนตัว ซึ่งจะช่วยปกป้องผู้ใช้และเครือข่ายภายในจากการโจมตีที่อาจเกิดขึ้น เช่น Cross-Site Request Forgery (CSRF) Chrome ได้ทยอยนำ PNA ไปใช้งาน และจะเพิ่มการปกป้องในรุ่นที่กำลังจะเปิดตัว
การปกป้องที่สำคัญของ PNA (พร้อมสถานะปัจจุบันของ)
- บริบทที่ปลอดภัย: อนุญาตให้เฉพาะบริบทที่ปลอดภัยเท่านั้นที่ได้รับอนุญาตให้ส่งคำขอทรัพยากรย่อยของเครือข่ายส่วนตัว (บังคับใช้ตั้งแต่ Chrome 94) โปรดดูรายละเอียดที่โพสต์อัปเดตการเข้าถึงเครือข่ายส่วนตัว
- คำขอการตรวจสอบล่วงหน้า: Chrome จะส่งคำขอการตรวจสอบล่วงหน้าก่อนคำขอทรัพยากรย่อยของเครือข่ายส่วนตัวเพื่อตรวจสอบสิทธิ์ของเซิร์ฟเวอร์ (คำเตือนในเครื่องมือสำหรับนักพัฒนาเว็บเกี่ยวกับความล้มเหลวตั้งแต่ Chrome 104 จะบังคับใช้ใน Chrome 104) ซึ่งได้อธิบายไว้ในการเข้าถึงเครือข่ายส่วนตัว: แนะนำการตรวจสอบล่วงหน้า ตั้งแต่ Chrome 123 เป็นต้นไป Chrome จะไม่รวมส่วนหัว CORS บางรายการ เช่น
Accept
หากมีการสร้างและส่งการตรวจสอบล่วงหน้าเนื่องจาก PNA เท่านั้น - การยกเว้นจากต้นทางเดียวกัน: คำขอที่มาจากต้นทางเดียวกันซึ่งมีโอกาสน่าเชื่อถือจะได้รับการยกเว้นจากข้อจำกัด PNA
การปกป้องที่ดียิ่งขึ้น: ผู้ปฏิบัติงานเกี่ยวกับเว็บ
การปกป้อง PNA จะขยายครอบคลุมWeb 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 ยังใช้กับ Navigation Fetch (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: โดยปกติจะเริ่มใน Chrome 126 PNA จะครอบคลุมแฮนด์เชค WebSocket (คำเตือนก่อน)
- การบังคับใช้อย่างเต็มรูปแบบ: จะมีการบังคับใช้ข้อจำกัด PNA ทั้งหมด (การบล็อกคำขอที่ไม่เป็นไปตามข้อกำหนด) ชั่วคราวใน Chrome 130 ผู้ใช้จะมีการตั้งค่าเว็บไซต์เพื่อลบล้าง PNA สำหรับเว็บไซต์ที่เชื่อถือได้
ความคิดเห็นเกี่ยวกับกรณีการใช้งานเครือข่ายส่วนตัว
หากคุณโฮสต์เว็บไซต์บนเครือข่ายส่วนตัวที่ต้องการคำขอจากเครือข่ายสาธารณะ ทีม Chrome ต้องการความคิดเห็นจากคุณ รายงานปัญหาที่เครื่องมือติดตามปัญหา Chromium (คอมโพเนนต์: Blink>SecurityFeature>CORS>PrivateNetworkAccess)
รูปภาพโดย Jakub noopenererdzicki ใน Unsplash