Разработка безопасных приложений WebView2
Элемент управления WebView2 позволяет разработчикам размещать веб-содержимое в собственных приложениях. При правильном использовании размещение веб-содержимого обеспечивает ряд преимуществ, таких как использование пользовательского веб-интерфейса, доступ к функциям веб-платформы, совместное использование кода на разных платформах и т. д. Чтобы избежать уязвимостей, которые могут возникнуть из-за размещения веб-содержимого, обязательно спроектируйте приложение WebView2, чтобы тщательно отслеживать взаимодействие между веб-содержимым и ведущим приложением.
Обрабатывать все веб-содержимое как небезопасное:
Проверьте веб-сообщения и параметры объекта узла перед их использованием, так как веб-сообщения и параметры могут быть неправильно сформированы (непреднамеренно или злонамеренно) и могут привести к неожиданному поведению приложения.
Всегда проверяйте источник документа, который выполняется в WebView2, и оцените надежность содержимого.
Разработка определенных веб-сообщений и взаимодействия с объектами узла вместо использования универсальных прокси-серверов.
Задайте следующие параметры, чтобы ограничить функциональные возможности веб-содержимого, изменив ICoreWebView2Settings (Win32) или CoreWebView2Settings (.NET):
Задайте значение
AreHostObjectsAllowed
false
, если вы не ожидаете, что веб-содержимое будет обращаться к объектам узла.Задайте значение
IsWebMessageEnabled
false
, если вы не ожидаете, что веб-содержимое будет публиковать веб-сообщения в собственном приложении.Задайте значение
IsScriptEnabled
false
, если веб-содержимое не должно выполнять скрипты (например, при отображении статического HTML-содержимого).Задайте значение
false
AreDefaultScriptDialogsEnabled
, если вы не ожидаете отображенияalert
веб-содержимого илиprompt
диалоговых окон.
Обновите параметры на основе источника новой страницы:
Чтобы предотвратить переход приложения на определенные страницы, используйте
NavigationStarting
события иFrameNavigationStarting
для проверки навигации по страницам или кадрам, а затем условно заблокируйте навигацию.При переходе на новую страницу может потребоваться изменить значения свойств в ICoreWebView2Settings (Win32) или CoreWebView2Settings (.NET), как описано ранее.
При переходе к новому документу
ContentLoading
используйте событие иRemoveHostObjectFromScript
, чтобы удалить предоставленные объекты узла.WebView2 не может быть запущен от имени системного пользователя. Это ограничение блокирует такие сценарии, как создание поставщика учетных данных.