วันที่เผยแพร่ต้นฉบับ: วันที่ 9 ธันวาคม 2568
KB ID: 5074596
บทความนี้อธิบายถึงการเปลี่ยนแปลงที่มีผลต่อสภาพแวดล้อมขององค์กรหรือที่มีการจัดการโดย IT เป็นหลัก เมื่อมีการใช้สคริปต์ PowerShell สําหรับการทํางานอัตโนมัติและการเรียกดูเนื้อหาเว็บ People การใช้อุปกรณ์ในการตั้งค่าส่วนบุคคลหรือการตั้งค่าภายในบ้านโดยทั่วไปไม่จําเป็นต้องดําเนินการใดๆ เนื่องจากสถานการณ์เหล่านี้ไม่ผิดปกติกับสภาพแวดล้อมที่มีการจัดการโดย IT
|
เปลี่ยนวันที่ |
เปลี่ยนคําอธิบาย |
|
วันที่ 20 ธันวาคม 2568 |
|
บทสรุป
Windows PowerShell 5.1 จะแสดงพร้อมท์การยืนยันความปลอดภัยเมื่อใช้คําสั่ง Invoke-WebRequest เพื่อดึงข้อมูลเว็บเพจโดยไม่มีพารามิเตอร์พิเศษ
คําเตือนเกี่ยวกับความปลอดภัย: ความเสี่ยงในการดําเนินการสคริปต์ Invoke-WebRequest วิเคราะห์เนื้อหาของเว็บเพจ โค้ดสคริปต์ในเว็บเพจอาจถูกเรียกใช้งานเมื่อมีการแยกวิเคราะห์หน้า
การดําเนินการที่แนะนํา: ใช้สวิตช์ -UseBasicParsing เพื่อหลีกเลี่ยงการดําเนินการโค้ดสคริปต์
คุณต้องการดำเนินการต่อหรือไม่
พร้อมท์นี้เตือนว่าสคริปต์ในหน้าอาจทํางานในระหว่างการแยกวิเคราะห์และแนะนําให้ใช้พารามิเตอร์ -UseBasicParsing เพื่อหลีกเลี่ยงการดําเนินการสคริปต์ใดๆ ผู้ใช้ต้องเลือกที่จะดําเนินการต่อหรือยกเลิกการดําเนินการ การเปลี่ยนแปลงนี้ช่วยป้องกันเนื้อหาเว็บที่เป็นอันตรายโดยต้องได้รับความยินยอมจากผู้ใช้ก่อนการดําเนินการที่อาจมีความเสี่ยง
คําสั่ง Invoke-WebRequest ของ PowerShell ทําให้การร้องขอ HTTP หรือ HTTPS ไปยังเว็บเซิร์ฟเวอร์และส่งกลับผลลัพธ์ บทความนี้เป็นเอกสารการเปลี่ยนแปลงที่เข้มงวดซึ่ง Windows PowerShell 5.1 จะแสดงพร้อมท์การยืนยันความปลอดภัยโดยเจตนาเมื่อใช้คําสั่ง Invoke-WebRequest เพื่อดึงข้อมูลเว็บเพจโดยไม่มีพารามิเตอร์พิเศษ ลักษณะการทํางานนี้เกิดขึ้นหลังจากไคลเอ็นต์ Windows และเซิร์ฟเวอร์ที่ได้รับการสนับสนุนได้ติดตั้ง Windows Updates วางจําหน่ายในวันที่ 9 ธันวาคม 2025 และหลังจากนั้น ดูข้อมูลเพิ่มเติมได้ที่ CVE-2025-54100
มีอะไรเปลี่ยนแปลงบ้าง
-
ลักษณะการทํางานก่อนหน้านี้
-
การแยกวิเคราะห์ Full Document Object Model (DOM) โดยใช้คอมโพเนนต์ของ Internet Explorer (HTMLDocument Interface (mshtml)) ซึ่งสามารถดําเนินการสคริปต์จากเนื้อหาที่ดาวน์โหลดได้
-
-
ลักษณะการทํางานใหม่
-
พร้อมท์การยืนยันความปลอดภัย: หลังจากติดตั้งการอัปเดต Windows ที่เผยแพร่ในวันที่ 9 ธันวาคม 2025 หรือหลังจากนั้น การเรียกใช้คําสั่ง Invoke-WebRequest (หรือที่เรียกว่า curl) ใน PowerShell 5.1 จะทริกเกอร์พร้อมท์ความปลอดภัย (เมื่อไม่มีการใช้พารามิเตอร์พิเศษ) พร้อมท์จะปรากฏในคอนโซล PowerShell พร้อมคําเตือนเกี่ยวกับความเสี่ยงในการดําเนินการสคริปต์ ซึ่งหมายความว่า PowerShell หยุดชั่วคราวเพื่อเตือนคุณว่าโดยไม่มีข้อควรระวัง เนื้อหาสคริปต์เว็บเพจสามารถดําเนินการบนระบบของคุณเมื่อถูกประมวลผล ตามค่าเริ่มต้น ถ้าคุณกด Enter (หรือเลือก ไม่) การดําเนินการจะถูกยกเลิกเพื่อความปลอดภัย PowerShell จะแสดงข้อความว่าถูกยกเลิกเนื่องจากปัญหาด้านความปลอดภัยและแนะนําให้เรียกใช้คําสั่งอีกครั้งโดยใช้พารามิเตอร์ -UseBasicParsing สําหรับการประมวลผลที่ปลอดภัย หากคุณเลือก ใช่ PowerShell จะดําเนินการแยกวิเคราะห์หน้าโดยใช้วิธีเก่า (การแยกวิเคราะห์ HTML แบบเต็ม) ซึ่งหมายความว่าจะโหลดเนื้อหาและสคริปต์ฝังตัวใดๆ ตามที่ใช้ไป การเลือก ใช่ หมายความว่าคุณกําลังยอมรับความเสี่ยงและอนุญาตให้คําสั่งทํางานได้เหมือนที่เคยทําไปก่อนหน้านี้ ในขณะที่การเลือก ไม่ใช่ (ค่าเริ่มต้น) จะหยุดการกระทําเพื่อปกป้องคุณ
-
Interactive vs. Scripted Use: บทนําของพร้อมท์นี้มีผลต่อการใช้งานแบบโต้ตอบเป็นหลัก ในเซสชันแบบโต้ตอบ คุณจะเห็นคําเตือนและต้องตอบกลับ สําหรับสคริปต์อัตโนมัติ (สถานการณ์ที่ไม่โต้ตอบ เช่น งานที่กําหนดเวลาไว้หรือไปป์ไลน์ CI) พร้อมท์นี้อาจทําให้สคริปต์ค้างขณะรอการป้อนข้อมูล เพื่อหลีกเลี่ยงปัญหาดังกล่าว เราขอแนะนําให้อัปเดตสคริปต์ดังกล่าวเพื่อใช้พารามิเตอร์ที่ปลอดภัยอย่างชัดเจน (ดูด้านล่าง) เพื่อให้แน่ใจว่าไม่จําเป็นต้องมีการยืนยันด้วยตนเอง
-
ดำเนิน
สคริปต์และคําสั่ง PowerShell ส่วนใหญ่ที่ใช้คําสั่ง Invoke-WebRequest จะยังคงทํางานกับการปรับเปลี่ยนเพียงเล็กน้อยหรือไม่มีเลย ตัวอย่างเช่น สคริปต์ที่ดาวน์โหลดเนื้อหาเท่านั้นหรือทํางานกับเนื้อหาการตอบสนองเนื่องจากข้อความหรือข้อมูลจะไม่ได้รับผลกระทบและไม่จําเป็นต้องมีการเปลี่ยนแปลงใดๆ
ถ้าคุณมีสคริปต์ที่ได้รับผลกระทบจากการเปลี่ยนแปลงนี้ ให้ใช้วิธีการใดวิธีการหนึ่งต่อไปนี้
สําหรับการดึงข้อมูลเนื้อหา ไม่จําเป็นต้องดําเนินการใดๆ หากการใช้คําสั่ง Invoke-WebRequest โดยทั่วไปของคุณคือการดึงข้อมูลเนื้อหา (เช่น การดาวน์โหลดไฟล์หรือการอ่านข้อความคงที่) และคุณไม่ได้พึ่งพาการโต้ตอบของไซต์ขั้นสูงหรือการแยกวิเคราะห์ HTML DOM ลักษณะการทํางานเริ่มต้นใหม่มีความปลอดภัยมากขึ้น สคริปต์ที่ฝังอยู่ในเนื้อหาเว็บจะไม่ทํางานโดยไม่ได้รับอนุญาตจากคุณ และนี่คือการกําหนดค่าที่แนะนําสําหรับสถานการณ์ส่วนใหญ่
สําหรับการใช้งานแบบโต้ตอบ เพียงตอบกลับ No ไปยังพร้อมท์ความปลอดภัยใหม่ (หรือกด Enter เพื่อยอมรับค่าเริ่มต้น) และเรียกใช้คําสั่งของคุณอีกครั้งด้วยพารามิเตอร์ -UseBasicParsing เพื่อเรียกใช้เนื้อหาอย่างปลอดภัย วิธีนี้จะหลีกเลี่ยงการดําเนินการโค้ดสคริปต์ใดๆ ในหน้าที่ดึงข้อมูล ถ้าคุณดึงข้อมูลเนื้อหาเว็บแบบโต้ตอบบ่อยๆ ให้พิจารณาใช้พารามิเตอร์ -UseBasicParsing ตามค่าเริ่มต้นในคําสั่งของคุณเพื่อข้ามพร้อมท์ทั้งหมดและรับรองความปลอดภัยสูงสุด
สําหรับสคริปต์อัตโนมัติหรืองานที่กําหนดเวลาไว้ ให้อัปเดตเพื่อรวมพารามิเตอร์ -UseBasicParsing ในการเรียก Invoke-WebRequest การดําเนินการนี้จะเลือกลักษณะการทํางานที่ปลอดภัยไว้ล่วงหน้าเพื่อไม่ให้พร้อมท์ปรากฏขึ้น และสคริปต์ของคุณยังคงทํางานต่อไปโดยไม่มีการขัดจังหวะ เมื่อทําเช่นนี้ คุณจึงมั่นใจได้ว่าระบบอัตโนมัติของคุณจะทํางานได้อย่างราบรื่นหลังจากการอัปเดตในขณะที่ยังคงใช้ประโยชน์จากความปลอดภัยที่ได้รับการปรับปรุง
-
สําหรับสคริปต์ที่เรียกใช้ด้วยตัวเลือก -NoProfile: ถ้าสคริปต์มีการเกิดขึ้นหลายครั้งของการเรียก Invoke-WebRequest ให้ประกาศ $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true ที่ด้านบนของสคริปต์
-
เมื่อใช้ Invoke-WebRequest กับพารามิเตอร์ -UseBasicParsing การแยกวิเคราะห์ Full Document Object Model (DOM) โดยใช้คอมโพเนนต์ของ Internet Explorer (HTMLDocument Interface (mshtml)) ไม่สามารถทําได้
สําหรับสคริปต์หรือระบบอัตโนมัติที่จัดการกับเนื้อหาเว็บที่ไม่น่าเชื่อถือหรือสาธารณะ และต้องใช้การประมวลผลโครงสร้างหรือฟอร์ม HTML ให้พิจารณา ปรับโครงสร้าง ใหม่หรืออัปเดตเพื่อความปลอดภัยในระยะยาว แทนที่จะพึ่งพา PowerShell เพื่อแยกวิเคราะห์และเรียกใช้สคริปต์เว็บเพจที่อาจเป็นอันตรายคุณสามารถ:
-
ใช้วิธีหรือไลบรารีการแยกวิเคราะห์แบบอื่น (ตัวอย่างเช่น ถือว่าเนื้อหาเว็บเพจเป็นข้อความธรรมดาหรือ XML โดยใช้ regex หรือไลบรารีการแยกวิเคราะห์ XML/HTML ที่ไม่ได้ดําเนินการสคริปต์)
-
ปรับปรุงวิธีการโต้ตอบเว็บของคุณให้ทันสมัย ซึ่งอาจใช้ PowerShell Core เวอร์ชันที่ใหม่กว่า (เวอร์ชัน 7.x หรือใหม่กว่า) ซึ่งไม่ได้ขึ้นอยู่กับโปรแกรมของ Internet Explorer และหลีกเลี่ยงการเรียกใช้สคริปต์ หรือโดยใช้เครื่องมือการขูดเว็บเฉพาะที่จัดการเนื้อหาได้อย่างปลอดภัยมากขึ้น จํากัดการพึ่งพาคุณลักษณะเฉพาะของ Internet Explorer เนื่องจาก Internet Explorer ไม่ได้รับการสนับสนุน วางแผนที่จะเขียนส่วนต่างๆ ของสคริปต์ของคุณใหม่โดยขึ้นอยู่กับฟีเจอร์เหล่านั้น เพื่อให้สามารถทํางานในสภาพแวดล้อมที่มีการจัดการเนื้อหาเว็บได้อย่างปลอดภัย
-
Invoke-WebRequest ใน PowerShell Core (เวอร์ชัน 7.x หรือใหม่กว่า) ไม่รองรับการแยกวิเคราะห์ DOM โดยใช้คอมโพเนนต์ของ Internet Explorer การแยกวิเคราะห์เริ่มต้นจะเรียกเนื้อหาได้อย่างปลอดภัยโดยไม่มีการดําเนินการสคริปต์
-
-
เป้าหมายของการปรับโครงสร้างใหม่คือการบรรลุฟังก์ชันการทํางานที่คุณต้องการโดยไม่ต้องเผชิญกับความเสี่ยงด้านความปลอดภัย จึงโอบกอดค่าเริ่มต้นที่ปลอดภัยยิ่งขึ้นที่นําเสนอโดยการเปลี่ยนแปลงนี้
ถ้าคุณมีความต้องการเฉพาะในการใช้ความสามารถในการแยกวิเคราะห์ HTML แบบเต็มของคําสั่ง Invoke-WebRequest (เช่น การโต้ตอบกับเขตข้อมูลฟอร์มหรือการขูดข้อมูลที่มีโครงสร้าง) และคุณเชื่อถือแหล่งที่มาของเนื้อหาเว็บ คุณยังคงสามารถดําเนินการต่อกับลักษณะการทํางานของการแยกวิเคราะห์แบบดั้งเดิมได้ทีละกรณี ในเซสชันแบบโต้ตอบ นี่หมายความว่าการเลือก ใช่ ที่พร้อมท์การยืนยันเพื่ออนุญาตให้การดําเนินการดําเนินการต่อ คุณจะได้รับการแจ้งเตือนเกี่ยวกับความเสี่ยงด้านความปลอดภัยทุกครั้งที่คุณทําเช่นนั้น การดําเนินการโดยไม่มีพารามิเตอร์ -UseBasicParsing ควรถูกจํากัดตามสถานการณ์ที่คุณเชื่อถือเนื้อหาเว็บอย่างเต็มรูปแบบ (ตัวอย่างเช่น แอปพลิเคชันบนเว็บภายในภายใต้การควบคุมของคุณหรือเว็บไซต์ที่ปลอดภัยที่รู้จัก)
สิ่งสำคัญ: ไม่แนะนําให้ใช้วิธีนี้สําหรับสคริปต์ที่เรียกใช้เทียบกับเนื้อหาเว็บที่ไม่น่าเชื่อถือหรือสาธารณะ เนื่องจากวิธีนี้จะทําให้เกิดความเสี่ยงต่อการดําเนินการสคริปต์เงียบที่การอัปเดตนี้มีวัตถุประสงค์เพื่อลดความเสี่ยง นอกจากนี้ สําหรับระบบอัตโนมัติที่ไม่ใช่แบบโต้ตอบ จะไม่มีกลไกในตัวในการยินยอมให้พร้อมท์โดยอัตโนมัติ ดังนั้นจึงไม่แนะนําให้ใช้การแยกวิเคราะห์แบบเต็มในสคริปต์ (นอกเหนือจากความเสี่ยง) ใช้ตัวเลือกนี้อย่างจํากัดและเป็นการวัดชั่วคราวเท่านั้น
คำถามที่ถามบ่อย
สําหรับกรณีส่วนใหญ่ สคริปต์ที่ดาวน์โหลดไฟล์หรือดึงข้อมูลเนื้อหาเว็บเป็นข้อความจะยังคงทํางานได้ เมื่อต้องการหลีกเลี่ยงพร้อมท์ ให้เพิ่มพารามิเตอร์ -UseBasicParsing
สคริปต์ที่ใช้การแยกวิเคราะห์ HTML ขั้นสูง (เช่น ฟอร์มหรือ DOM) อาจค้างหรือแสดงผลข้อมูลดิบแทนวัตถุที่มีโครงสร้าง คุณจะต้องสลับไปยังการแยกวิเคราะห์พื้นฐานหรือปรับเปลี่ยนสคริปต์ของคุณเพื่อจัดการเนื้อหาที่แตกต่างกัน
ใช้พารามิเตอร์ -UseBasicParsing กับคําสั่ง Invoke-WebRequest ในสคริปต์ PowerShell เสมอเพื่อให้แน่ใจว่าการดําเนินการที่ปลอดภัยและไม่โต้ตอบ
ได้ สคริปต์ที่ขึ้นอยู่กับการแยกวิเคราะห์แบบดั้งเดิมต้องได้รับการอัปเดตเพื่อเข้าร่วมหรือปรับแฟกเตอร์ใหม่
การเปลี่ยนแปลงใน PowerShell สามารถใช้ได้กับทั้งการอัปเดตมาตรฐานและการอัปเดต Hotpatch ซึ่งส่งผลให้เกิดการเปลี่ยนแปลงลักษณะการทํางานแบบเดียวกัน
ได้ PowerShell 7 ใช้การแยกวิเคราะห์ที่ปลอดภัยอยู่แล้วตามค่าเริ่มต้น
ติดต่อเจ้าของโมดูลสําหรับแผนการสนับสนุน ใช้การเลือกรับเนื้อหาที่เชื่อถือได้เป็นการชั่วคราวขณะโยกย้าย
เมื่อต้องการเตรียมพร้อมและตรวจสอบความถูกต้องของการเปลี่ยนแปลงนี้ เราขอแนะนําให้คุณ:
-
ระบุสคริปต์โดยใช้ฟีเจอร์ DOM
-
ทดสอบการทํางานอัตโนมัติด้วยค่าเริ่มต้นใหม่
-
จํากัดการเข้าร่วมแบบดั้งเดิมกับแหล่งที่เชื่อถือได้
-
วางแผนการปรับแฟกเตอร์สําหรับเนื้อหาที่ไม่น่าเชื่อถือ