開發安全的 WebView2 應用程式
WebView2 控制項可讓開發人員在原生應用程式中裝載 Web 內容。 正確使用時,裝載 Web 內容會提供數個優點,例如使用 Web 型 UI、存取 Web 平臺的功能、跨平臺共用程式碼等等。 若要避免裝載 Web 內容可能產生的弱點,請務必設計您的 WebView2 應用程式,以密切監視 Web 內容與主應用程式之間的互動。
將所有 Web 內容視為不安全:
在取用 Web 訊息和主機物件參數之前,請先驗證它們,因為 Web 訊息和參數的格式可能不正確, (不小心或惡意) ,而且可能會導致應用程式非預期地運作。
請務必檢查在 WebView2 內執行的檔原點,並評估內容的可信度。
設計特定的 Web 訊息和主機物件互動,而不是使用泛型 Proxy。
將 ICoreWebView2Settings 修改為 Win) 32 (或 CoreWebView2Settings (.NET) ,以設定下列選項來限制 Web 內容功能:
如果您不預期 Web 內容會存取主機物件,請將 設定
AreHostObjectsAllowed
為false
。false
如果您不預期 Web 內容會將 Web 訊息張貼到原生應用程式,請將 設定IsWebMessageEnabled
為 。設定
IsScriptEnabled
為false
,如果您不預期 Web 內容會執行腳本 (例如,當顯示靜態 HTML 內容時) 。如果您不預期 Web 內容會顯示
alert
或prompt
對話方塊,請將 設定AreDefaultScriptDialogsEnabled
為false
。
根據新頁面的來源更新設定:
若要防止您的應用程式流覽至特定頁面,請使用
NavigationStarting
和FrameNavigationStarting
事件來檢查頁面或框架導覽,然後有條件地封鎖導覽。流覽至新頁面時,您可能需要調整 ICoreWebView2Settings (Win32) 或 CoreWebView2Settings (.NET) 上的屬性值,如先前所述。
流覽至新檔時,請使用
ContentLoading
事件 和RemoveHostObjectFromScript
來移除公開的主機物件。WebView2 無法以系統使用者身分執行。 此限制會封鎖建置認證提供者之類的案例。