开发安全的 WebView2 应用
WebView2 控件允许开发人员在本机应用程序中托管 Web 内容。 正确使用时,托管 Web 内容具有多种优势,例如使用基于 Web 的 UI、访问 Web 平台的功能、跨平台共享代码等。 若要避免托管 Web 内容时可能出现的漏洞,请确保将 WebView2 应用程序设计为密切监视 Web 内容与主机应用程序之间的交互。
将所有 Web 内容视为不安全:
在使用 Web 消息和主机对象参数之前验证它们,因为 Web 消息和参数格式可能不正确, (无意或恶意) ,并可能导致应用出现意外行为。
始终检查在 WebView2 中运行的文档的来源,并评估内容的可信度。
设计特定的 Web 消息和主机对象交互,而不是使用泛型代理。
通过修改 ICoreWebView2Settings (Win32) 或 CoreWebView2Settings (.NET) ,设置以下选项以限制 Web 内容功能:
false
如果不希望 Web 内容访问主机对象,请将 设置为AreHostObjectsAllowed
。false
如果不希望 Web 内容将 Web 消息发布到本机应用程序,请将 设置为IsWebMessageEnabled
。false
如果不希望 Web 内容 (运行脚本(例如,在显示静态 HTML 内容) 时),请将 设置为IsScriptEnabled
。false
如果不希望显示alert
Web 内容或prompt
对话框,请将 设置为AreDefaultScriptDialogsEnabled
。
基于新页面的原点更新设置:
若要防止应用程序导航到某些页面,请使用
NavigationStarting
和FrameNavigationStarting
事件检查页面或框架导航,然后有条件地阻止导航。导航到新页面时,可能需要调整 ICoreWebView2Settings (Win32) 或 CoreWebView2Settings (.NET) 上的属性值,如前所述。
导航到新文档时,请使用
ContentLoading
事件 和RemoveHostObjectFromScript
删除公开的主机对象。WebView2 不能以系统用户身份运行。 此限制会阻止生成凭据提供程序等方案。