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