開發安全的 WebView2 應用程式

WebView2 控制項可讓開發人員在原生應用程式中裝載 Web 內容。 正確使用時,裝載 Web 內容會提供數個優點,例如使用 Web 型 UI、存取 Web 平臺的功能、跨平臺共用程式碼等等。 若要避免裝載 Web 內容可能產生的弱點,請務必設計您的 WebView2 應用程式,以密切監視 Web 內容與主應用程式之間的互動。

  • 將所有 Web 內容視為不安全:

    • 在取用 Web 訊息和主機物件參數之前,請先驗證它們,因為 Web 訊息和參數的格式可能不正確, (不小心或惡意) ,而且可能會導致應用程式非預期地運作。

    • 請務必檢查在 WebView2 內執行的檔原點,並評估內容的可信度。

  • 設計特定的 Web 訊息和主機物件互動,而不是使用泛型 Proxy。

  • ICoreWebView2Settings 修改為 Win) 32 (或 CoreWebView2Settings (.NET) ,以設定下列選項來限制 Web 內容功能:

    • 如果您不預期 Web 內容會存取主機物件,請將 設定 AreHostObjectsAllowedfalse

    • false如果您不預期 Web 內容會將 Web 訊息張貼到原生應用程式,請將 設定 IsWebMessageEnabled 為 。

    • 設定 IsScriptEnabledfalse ,如果您不預期 Web 內容會執行腳本 (例如,當顯示靜態 HTML 內容時) 。

    • 如果您不預期 Web 內容會顯示 alertprompt 對話方塊,請將 設定 AreDefaultScriptDialogsEnabledfalse

  • 根據新頁面的來源更新設定:

    • 若要防止您的應用程式流覽至特定頁面,請使用 NavigationStartingFrameNavigationStarting 事件來檢查頁面或框架導覽,然後有條件地封鎖導覽。

    • 流覽至新頁面時,您可能需要調整 ICoreWebView2Settings (Win32) CoreWebView2Settings (.NET) 上的屬性值,如先前所述。

  • 流覽至新檔時,請使用 ContentLoading 事件 和 RemoveHostObjectFromScript 來移除公開的主機物件。

  • WebView2 無法以系統使用者身分執行。 此限制會封鎖建置認證提供者之類的案例。