开发安全的 WebView2 应用

WebView2 控件允许开发人员在本机应用程序中托管 Web 内容。 正确使用时,托管 Web 内容会提供多种优势,例如使用基于 Web 的 UI、访问 Web 平台的功能、跨平台共享代码等。 若要避免托管 Web 内容可能产生的漏洞,请确保设计 WebView2 应用程序以密切监视 Web 内容与主机应用程序之间的交互。

  • 将所有 Web 内容视为不安全:

    • 在使用 Web 消息和主机对象参数之前验证它们,因为 Web 消息和参数可能在无意中或恶意) (格式不正确,并可能导致应用行为意外。

    • 请始终检查在 WebView2 中运行的文档的来源,并评估内容的可信度。

  • 设计特定的 Web 消息和主机对象交互,而不是使用泛型代理。

  • 通过修改 ICoreWebView2Settings (Win32) CoreWebView2Settings (.NET) ,设置以下选项以限制 Web 内容功能:

    • 如果不希望 Web 内容访问主机对象,请将其设置 AreHostObjectsAllowedfalse

    • false如果不希望 Web 内容将 Web 消息发布到本机应用程序,请将其设置IsWebMessageEnabled为”

    • false如果不希望 Web 内容运行脚本,则设置IsScriptEnabled为 (例如,在显示静态 HTML 内容) 时。

    • 如果不希望 Web 内容显示alertprompt对话框,请设置AreDefaultScriptDialogsEnabledfalse

  • 根据新页面的来源更新设置:

    • 若要防止应用程序导航到某些页面,请使用 NavigationStartingFrameNavigationStarting 事件检查页面或帧导航,然后有条件地阻止导航。

    • 导航到新页面时,可能需要根据前面所述调整 ICoreWebView2Settings (Win32) CoreWebView2Settings (.NET) 上的属性值。

  • 导航到新文档时,请使用该 ContentLoading 事件并 RemoveHostObjectFromScript 删除公开的主机对象。

  • WebView2 不能作为系统用户运行。 此限制会阻止生成凭据提供程序等方案。