Разработка безопасных приложений WebView2

Элемент управления WebView2 позволяет разработчикам размещать веб-содержимое в собственных приложениях. При правильном использовании размещение веб-содержимого обеспечивает ряд преимуществ, таких как использование пользовательского веб-интерфейса, доступ к функциям веб-платформы, совместное использование кода на разных платформах и т. д. Чтобы избежать уязвимостей, которые могут возникнуть из-за размещения веб-содержимого, обязательно спроектируйте приложение WebView2, чтобы тщательно отслеживать взаимодействие между веб-содержимым и ведущим приложением.

  • Обрабатывать все веб-содержимое как небезопасное:

    • Проверьте веб-сообщения и параметры объекта узла перед их использованием, так как веб-сообщения и параметры могут быть неправильно сформированы (непреднамеренно или злонамеренно) и могут привести к неожиданному поведению приложения.

    • Всегда проверяйте источник документа, который выполняется в WebView2, и оцените надежность содержимого.

  • Разработка определенных веб-сообщений и взаимодействия с объектами узла вместо использования универсальных прокси-серверов.

  • Задайте следующие параметры, чтобы ограничить функциональные возможности веб-содержимого, изменив ICoreWebView2Settings (Win32) или CoreWebView2Settings (.NET):

    • Задайте значение AreHostObjectsAllowedfalse, если вы не ожидаете, что веб-содержимое будет обращаться к объектам узла.

    • Задайте значение IsWebMessageEnabledfalse, если вы не ожидаете, что веб-содержимое будет публиковать веб-сообщения в собственном приложении.

    • Задайте значение IsScriptEnabledfalse, если веб-содержимое не должно выполнять скрипты (например, при отображении статического HTML-содержимого).

    • Задайте значение falseAreDefaultScriptDialogsEnabled , если вы не ожидаете отображения alert веб-содержимого или prompt диалоговых окон.

  • Обновите параметры на основе источника новой страницы:

    • Чтобы предотвратить переход приложения на определенные страницы, используйте NavigationStarting события и FrameNavigationStarting для проверки навигации по страницам или кадрам, а затем условно заблокируйте навигацию.

    • При переходе на новую страницу может потребоваться изменить значения свойств в ICoreWebView2Settings (Win32) или CoreWebView2Settings (.NET), как описано ранее.

  • При переходе к новому документу ContentLoading используйте событие и RemoveHostObjectFromScript , чтобы удалить предоставленные объекты узла.

  • WebView2 не может быть запущен от имени системного пользователя. Это ограничение блокирует такие сценарии, как создание поставщика учетных данных.