Първоначална дата на публикуване: 9 декември 2025 г.
ИД на КБ: 5074596
Резюме
Windows PowerShell 5.1 сега показва подкана за потвърждение на защитата при използване на командата Invoke-WebRequest за извличане на уеб страници без специални параметри. Тази подкана предупреждава, че скриптовете в страницата може да се изпълняват по време на анализирането и препоръчва използването на по-безопасния параметър -UseBasicParsing, за да се избегне изпълнението на скрипт. Потребителите трябва да изберат да продължат или да отменят операцията. Тази промяна помага за защитата срещу злонамерено уеб съдържание, като изисква съгласието на потребителя преди потенциално рискови действия.
Тази промяна засяга предимно корпоративни или ИТ управлявани среди, където скриптове на PowerShell се използват за автоматизация и извличане на уеб съдържание. Хора използването на устройства в лични или домашни настройки обикновено не е необходимо да предприемате никакви действия, тъй като тези сценарии са рядкост извън ИТ управлявани разполагания.
Какво е променено?
-
Предишно поведение
-
Анализ на обектен модел на целия документ (DOM) с помощта на компоненти на Internet Explorer (HTMLDocument интерфейс (mshtml)), който може да изпълнява скриптове от изтеглено съдържание.
-
-
Ново поведение
-
Подкана за потвърждение на защитата: След инсталирането на актуализациите на Windows, издадени на или след 9 декември 2025 г., изпълнението на командата Invoke-WebRequest (известно също като извиване) в PowerShell 5.1 ще задейства подкана за защита (когато не се използва специален параметър). Подканата се появява в конзолата на PowerShell с предупреждение относно риска от изпълнение на скрипт. Това означава, че PowerShell спира да ви предупреждава, че без предпазни мерки съдържанието на скрипта на уеб страницата може да се изпълни във вашата система, когато се обработи. По подразбиране, ако натиснете Клавиша Enter (или изберете Не), операцията ще бъде отменена с цел безопасност. PowerShell ще покаже съобщение, че е отменено поради проблеми със защитата, и предлага повторно изпълнение на командата с помощта на параметъра -UseBasicParsing за безопасна обработка. Ако изберете Да, PowerShell ще продължи да анализира страницата с помощта на по-стария метод (пълно анализиране на HTML), което означава, че ще зареди съдържанието и всички вградени скриптове, както преди. По същество избирането на Да означава, че поемате риска и позволявате на командата да се изпълнява както преди, докато избирате Не (по подразбиране) спира действието, за да ви защити.
-
Интерактивна спрямо скриптирана употреба: Въвеждането на тази подкана засяга предимно интерактивното използване. В интерактивните сесии ще видите предупреждението и ще трябва да отговорите. За автоматизирани скриптове (не-интерактивни сценарии, като например планирани задачи или CI канали), тази подкана може да доведе до увисване на скрипта в очакване на въвеждане на данни. За да избегнете това, препоръчваме да актуализирате тези скриптове, за да използвате изрично безопасните параметри (вж. по-долу), като се уверим, че те не изискват ръчно потвърждение.
-
Предприемане на действие
Повечето скриптове и команди на PowerShell, които използват командата Invoke-WebRequest, ще продължат да работят с малки или никакви промени. Например скриптове, които изтеглят съдържание или работят само с основния текст на отговора, тъй като текстът или данните не са засегнати и не изискват промени.
Ако имате скриптове, които са засегнати от тази промяна, използвайте един от следните подходи.
Не се изисква никакво действие, ако типичното използване на командата Invoke-WebRequest е за извличане на съдържание (например изтегляне на файлове или четене на статичен текст) и не разчитате на разширено взаимодействие със сайта или анализ на HTML DOM. Новото поведение по подразбиране е по-защитено – скриптовете, вградени в уеб съдържание, няма да се изпълняват без ваше разрешение – и това е препоръчителната конфигурация за повечето сценарии.
За интерактивно използване просто отговорете с "Не" на новата подкана за защита (или натиснете Enter , за да приемете настройката по подразбиране), и изпълнете отново командата с параметъра -UseBasicParsing, за да извлечете безопасно съдържанието. Това ще избегне изпълнението на код на скрипт в извлечената страница. Ако често извличате уеб съдържание интерактивно, помислете дали да не използвате параметъра -UseBasicParsing по подразбиране във вашите команди, за да пропуснете подканата изцяло и да осигурите максимална безопасност.
За автоматизирани скриптове или планирани задачи ги актуализирайте, за да включите параметъра -UseBasicParsing в извикванията invoke-WebRequest. Това предварително избира безопасното поведение, така че подканата да не се показва и скриптът ви да продължи да се изпълнява без прекъсване. По този начин гарантирате, че автоматизацията ви работи безпроблемно след актуализацията, като същевременно се възползвате от подобрената защита.
За скриптове или автоматизация, които се занимават с ненадеждно или публично уеб съдържание и изискват обработка на HTML структури или формуляри, помислете за реоргистриране или актуализиране с цел дългосрочна безопасност. Вместо да разчитате на PowerShell за анализиране и изпълнение на потенциално опасни скриптове за уеб страници, можете да:
-
Използвайте методи или библиотеки за алтернативно анализиране (например третирайте съдържанието на уеб страницата като обикновен текст или XML, като използвате библиотеки за анализ на regex или XML/HTML, които не изпълняват скриптове).
-
Модернизирайте подхода си към взаимодействията в интернет, например с помощта на по-нова версия на PowerShell Core (версия 7.x или по-нова), която не зависи от системата на Internet Explorer и избягва изпълнението на скриптове или чрез използване на специализирани инструменти за изрязване в уеб, които обработват съдържание по-сигурно.
-
Ограничете разчитането на функции на Internet Explorer, тъй като Internet Explorer е отхвърлен. Планирайте повторно писане на части от вашите скриптове, които зависят от тези функции, така че да могат да работят в среда, където уеб съдържанието се обработва безопасно.
-
Целта на реораторирането е да постигнете необходимата функционалност, без да излагате себе си на рискове за защитата, като по този начин се възприемат по-безопасните стойности по подразбиране, въведени с тази промяна.
Ако имате конкретна нужда да използвате командите Invoke-WebRequest , пълните възможности за анализ на HTML (като например взаимодействие с полета на формуляр или извличане на структурирани данни) и се доверявате на източника на уеб съдържанието, все още можете да продължите със старото поведение на анализ според случая. В интерактивните сесии това просто означава да изберете Да в подканата за потвърждение, за да позволите на операцията да продължи. Всеки път ще получавате напомняне за риска за защитата. Продължаването без параметъра -UseBasicParsing трябва да бъде ограничено до сценарии, при които напълно се доверявате на уеб съдържанието (например вътрешни уеб приложения, които са под ваш контрол или известни безопасни уеб сайтове).
Важно: Този подход не се препоръчва за скриптове, които се изпълняват срещу ненадеждно или публично уеб съдържание, тъй като той повторно въвежда риска от негласно изпълнение на скрипта, който тази актуализация има за цел да смекчи. Освен това, за не-интерактивната автоматизация няма вграден механизъм за автоматично съгласие за подканата, така че не е препоръчително да разчитате на пълно анализиране на скриптове (в допълнение към това, че е рисковано). Използвайте тази опция пестеливо и само като временна мярка.
Често задавани въпроси
В повечето случаи скриптовете, които изтеглят файлове или извличат уеб съдържание като текст, все още ще работят; добавете параметъра -UseBasicParsing, за да избегнете подкани. Скриптовете, използващи разширено HTML анализиране (например формуляри или DOM), може да увисят или да изходящи необработени данни вместо структурирани обекти; ще трябва да превключите към базово анализиране или модифициране на скрипта, за да обработвате съдържанието по различен начин.
Винаги използвайте параметъра -UseBasicParsing с командата Invoke-WebRequest в скриптове на PowerShell, за да осигурите безопасно, не-интерактивно изпълнение.
Да. Скриптове в зависимост от наследения анализ трябва да се актуализират, за да се включат или да се реоргатора.
Промяната в PowerShell, приложима както за стандартни актуализации, така и за актуализации на hotpatch, в резултат на което се променя поведението.
Да. PowerShell 7 вече използва защитен анализ по подразбиране.
Свържете се със собствениците на модула за планове за поддръжка. Използвайте временно записване за надеждно съдържание по време на мигрирането.
За да се подготвите и да потвърдите тази промяна, ви препоръчваме:
-
Идентифицирайте скриптове с помощта на функциите на DOM.
-
Тествайте автоматизацията с новата стойност по подразбиране.
-
Ограничете наследената опция за записване до надеждни източници.
-
Планиране на реоректориране за ненадеждно съдържание.