Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
WebView2 позволяет разработчикам размещать веб-содержимое в родных приложениях. При правильном использовании размещение веб-контента дает несколько преимуществ, таких как использование пользовательского веб-интерфейса, доступ к функциям веб-платформы или совместное использование кода между платформами.
В веб-браузере веб-сайтам предоставляются ограниченные возможности в изолированной среде. Однако при размещении веб-контента в собственном приложении веб-содержимое может получать доступ к ресурсам и API собственного приложения. Это может привести к уязвимостям системы безопасности, если веб-содержимое не изолировано должным образом от основного приложения. Чтобы избежать этих уязвимостей, следуйте приведенным ниже рекомендациям для повышения безопасности приложения WebView2.
Рассматривайте все веб-содержимое как небезопасное
Всегда проверка источник документа, работающего внутри WebView2, и оценивайте достоверность содержимого, особенно перед использованием
ExecuteScript,PostWebMessageAsJson,PostWebMessageAsString, или любого другого метода для отправки информации в элемент управления WebView2. Элемент управления WebView2 мог перейти на другую страницу посредством взаимодействия пользователя со страницей или скриптом на странице, вызвавшим переход. Происхождение документа можно получить изSourceсвойства элемента управления WebView2.Будьте осторожны с
AddScriptToExecuteOnDocumentCreated. Все будущиеnavigationsбудут выполнять один и тот же сценарий, и если этот сценарий предоставляет доступ к информации, предназначенной только для определенного источника, любой HTML-документ может иметь доступ к ресурсам и API собственного приложения.Проверяйте веб-сообщения и параметры объекта узла перед их использованием, так как веб-сообщения и параметры могут быть искажены (непреднамеренно или со злым умыслом) и могут привести к неожиданному поведению приложения.
При проверке результата вызова
ExecuteScriptметодаWebMessageReceived, который является событием, всегда проверкаSourceсвойство элемента управления WebView2 проверка источник отправителя или проверка любой другой механизм получения информации из HTML-документа в элементе управления WebView2, чтобы убедиться, что URI HTML-документа соответствует ожидаемому.
Избегайте универсальных прокси
Разрабатывайте специальные веб-сообщения и взаимодействия с объектами хоста вместо использования универсальных прокси-серверов.
Использование PostWebMessageAsJson для отправки сообщений
Используйте метод PostWebMessageAsJson для отправки сообщений в элемент управления WebView2. При создании сообщения для отправки в элемент управления WebView2 предпочитайте использовать PostWebMessageAsJson и создать строковый параметр JSON с помощью библиотеки JSON. Это позволяет избежать возможных случайностей при кодировании информации в строку или сценарий JSON и гарантирует, что никакие входные данные, управляемые злоумышленником, не смогут изменить остальную часть сообщения JSON или запустить произвольный код JavaScript.
Ограничение функциональности веб-контента
Ограничьте функциональность веб-содержимого, если оно не требуется. Обновите свойства CoreWebView2Settings WebView2, чтобы ограничить функциональность веб-содержимого, следующим образом:
Установите
AreHostObjectsAllowedзначениеfalse, если вы не ожидаете, что веб-содержимое будет обращаться к объектам host.Установите
IsWebMessageEnabledзначениеfalse, если вы не ожидаете, что веб-содержимое будет публиковать веб-сообщения в вашем родном приложении.Установите
IsScriptEnabledзначениеfalse, если вы не ожидаете, что веб-содержимое будет запускать сценарии (например, при показе статического содержимого HTML).Установите
AreDefaultScriptDialogsEnabledзначениеfalse, если вы не ожидаете, что веб-содержимое будет отображатьсяalertилиpromptотображать диалоговые окна.
Обновление параметров в зависимости от происхождения новой страницы
Обновите параметры на основе происхождения новой страницы, как указано ниже.
Чтобы запретить приложению переход на определенные страницы, используйте
NavigationStartingсобытия andFrameNavigationStartingдля проверки навигации по страницам или кадрам, а затем условно заблокируйте переход.При переходе на новую страницу может потребоваться настроить значения свойств объекта
CoreWebView2Settingsв соответствии с требованиями безопасности новой страницы, как описано в разделе " Ограничение функциональности веб-содержимого" выше.
Удаление открытых узловых объектов
При переходе к новому документу используйте это ContentLoading событие для RemoveHostObjectFromScript удаления открытых объектов узла.
WebView2 невозможно запустить от имени системного пользователя
WebView2 нельзя запустить от имени системного пользователя. Это ограничение блокирует такие сценарии, как создание поставщика учетных данных.
Рекомендуемый уровень привилегий для приложений узла WebView2
В целях безопасности рекомендуется размещать WebView2 в процессе, который выполняется со стандартной (без повышенных) прав целостности пользователя. Следуя принципу минимальных привилегий, приложения должны избегать запуска компонента WebView2-hosting с повышенными правами (администратора).
Если приложению требуются повышенные привилегии для выполнения определенных операций, рекомендуется изолировать эту работу в отдельном выделенном процессе и понизить права хост-компонента WebView2. Это позволяет использовать самый низкий уровень привилегий для поверхности размещения в браузере и соответствует рекомендуемым методикам безопасности приложений Windows.
Для ведущего приложения с повышенными правами используйте соответствующие флаги переопределения
Для процесса ведущего приложения WebView2 с повышенными правами используйте соответствующий тип флагов переопределения. Процесс с повышенными правами — это процесс с высоким уровнем целостности (High IL). Чтобы защитить процессы с повышенными правами от конфигурации, которые могут быть изменены обычными пользователями, WebView2 игнорирует определенные механизмы переопределения на уровне пользователя при выполнении хост-процесса с повышенными привилегиями.
При выполнении основного процесса с повышенными привилегиями:
WEBVIEW2_*Переопределения переменных среды (флаги) игнорируются, в том числеWEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS. См. следующие статьи:- Установка флагов браузера в локальной среде устройства во флагах браузера WebView2.
Флаги конфигурации, заданные в приложении WebView2 с помощью API WebView2, учитываются. См. следующие статьи:
- Установка флагов браузера программным путем с помощью кода в WebView2 флаги браузера.
HKEY_CURRENT_USER(HKCU) Переопределения политики игнорируются. См. следующие статьи:-
Переключение порядка поиска каналов (рекомендуется) в разделе Переключение на предварительный канал для тестирования ожидаемых API и функций — перейдите на вкладку раздела реестра и нажмите кнопку "Найти
HKCU". -
Как убедиться
ChannelSearchKind, что определенный канал используется в Переключение на предварительный канал для тестирования ожидаемых API и функций — перейдите на вкладку раздела реестра и нажмите кнопку "НайтиHKCU". -
Настройка папки исполняемого файла браузера (для локального тестирования) в разделе Переключение на предварительный канал для тестирования ожидаемых API и функций - Выберите вкладку раздела реестра и нажмите "Найти
HKCU". -
Отладка приложений WebView2 с помощью Visual Studio Code - Найти
HKEY_CURRENT_USER.
-
Переключение порядка поиска каналов (рекомендуется) в разделе Переключение на предварительный канал для тестирования ожидаемых API и функций — перейдите на вкладку раздела реестра и нажмите кнопку "Найти
AdditionalBrowserArgumentsПереопределения реестраHKCUигнорируются.HKEY_LOCAL_MACHINE(HKLM) Переопределения политики принимаются. См. следующие статьи:-
Переключение порядка поиска каналов (рекомендуется) в разделе Переключение на предварительный канал для тестирования ожидаемых API и функций — перейдите на вкладку раздела реестра и нажмите кнопку "Найти
HKLM". -
Как убедиться
ChannelSearchKind, что определенный канал используется в Переключение на предварительный канал для тестирования ожидаемых API и функций — перейдите на вкладку раздела реестра и нажмите кнопку "НайтиHKLM". -
Настройка папки исполняемого файла браузера (для локального тестирования) в разделе Переключение на предварительный канал для тестирования ожидаемых API и функций - Выберите вкладку раздела реестра и нажмите "Найти
HKLM".
-
Переключение порядка поиска каналов (рекомендуется) в разделе Переключение на предварительный канал для тестирования ожидаемых API и функций — перейдите на вкладку раздела реестра и нажмите кнопку "Найти
Приложения WebView2 без повышенных прав учитывают все поддерживаемые механизмы переопределения.
См. также:
- Распространение приложения WebView2 и среда выполнения WebView2 — найдите "с повышенными правами".