セキュリティで保護された 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 コンテンツがネイティブ アプリケーションに
false
Web メッセージを投稿することを想定していない場合は、 に設定IsWebMessageEnabled
します。Web コンテンツでスクリプトが実行されるとは思わない場合 (静的な HTML コンテンツを表示する場合など) は、 に
false
設定IsScriptEnabled
します。Web コンテンツが
false
表示またはprompt
ダイアログに表示alert
されない場合は、 に設定AreDefaultScriptDialogsEnabled
します。
新しいページの配信元に基づいて設定を更新します。
アプリケーションが特定のページに移動しないようにするには、 イベントと
FrameNavigationStarting
イベントを使用してNavigationStarting
ページまたはフレーム ナビゲーションを確認し、条件付きでナビゲーションをブロックします。新しいページに移動するときは、前に説明したように 、ICoreWebView2Settings (Win32) または CoreWebView2Settings (.NET) のプロパティ値を調整する必要がある場合があります。
新しいドキュメントに移動するときは、 イベントと
RemoveHostObjectFromScript
をContentLoading
使用して、公開されているホスト オブジェクトを削除します。WebView2 をシステム ユーザーとして実行することはできません。 この制限により、資格情報プロバイダーの構築などのシナリオがブロックされます。