セキュリティで保護された WebView2 アプリを開発する

WebView2 コントロールを使用すると、開発者はネイティブ アプリケーションで Web コンテンツをホストできます。 Web コンテンツを正しく使用すると、Web ベースの UI の使用、Web プラットフォームの機能へのアクセス、コードクロスプラットフォームの共有など、いくつかの利点があります。 Web コンテンツのホストから生じる可能性のある脆弱性を回避するには、Web コンテンツとホスト アプリケーション間の相互作用を厳密に監視するように WebView2 アプリケーションを設計してください。

  • すべての Web コンテンツを安全でないものとして扱います。

    • Web メッセージとホスト オブジェクト パラメーターは、Web メッセージとパラメーターの形式が正しくない (意図せず、または悪意を持って) 可能性があり、アプリが予期せず動作する可能性があるため、使用する前に Web メッセージとホスト オブジェクト パラメーターを検証します。

    • WebView2 内で実行されているドキュメントの配信元を常に確認し、コンテンツの信頼性を評価します。

  • 汎用プロキシを使用する代わりに、特定の Web メッセージとホスト オブジェクトの相互作用を設計します。

  • ICoreWebView2Settings (Win32) または CoreWebView2Settings (.NET) を変更して、Web コンテンツ機能を制限するには、次のオプションを設定します。

    • Web コンテンツがホスト オブジェクトにfalseアクセスすることを想定していない場合は、 に設定AreHostObjectsAllowedします。

    • Web コンテンツがネイティブ アプリケーションに falseWeb メッセージを投稿することを想定していない場合は、 に設定IsWebMessageEnabledします。

    • Web コンテンツでスクリプトが実行されるとは思わない場合 (静的な HTML コンテンツを表示する場合など) は、 にfalse設定IsScriptEnabledします。

    • Web コンテンツがfalse表示またはpromptダイアログに表示alertされない場合は、 に設定AreDefaultScriptDialogsEnabledします。

  • 新しいページの配信元に基づいて設定を更新します。

    • アプリケーションが特定のページに移動しないようにするには、 イベントと FrameNavigationStarting イベントを使用してNavigationStartingページまたはフレーム ナビゲーションを確認し、条件付きでナビゲーションをブロックします。

    • 新しいページに移動するときは、前に説明したように 、ICoreWebView2Settings (Win32) または CoreWebView2Settings (.NET) のプロパティ値を調整する必要がある場合があります。

  • 新しいドキュメントに移動するときは、 イベントと RemoveHostObjectFromScriptContentLoading使用して、公開されているホスト オブジェクトを削除します。

  • WebView2 をシステム ユーザーとして実行することはできません。 この制限により、資格情報プロバイダーの構築などのシナリオがブロックされます。