Call to dangerous WebView settings API
危険な WebView 設定 API への呼び出し
説明
アプリケーションで使用されるすべての WebView メソッドのリスト。
推奨事項
危険な WebView API の使用を軽減するには:
主な防御策 – 混在コンテンツを無効にする:
Native Android (Java):
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_NEVER_ALLOW);
}
Flutter (例:flutter_inappwebview):
InAppWebViewSettings(mixedContentMode: MixedContentMode.MIXED_CONTENT_NEVER_ALLOW)
- HTTPS ページが安全でない HTTP リソースを読み込むのを防ぐ
- インジェクションされたスクリプトを介した中間者攻撃(Man-in-the-middle)を防ぐ
ファイルアクセスを制限する:
Native Android (Java):
webView.getSettings().setAllowFileAccess(false);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
webView.getSettings().setAllowFileAccessFromFileURLs(false);
webView.getSettings().setAllowUniversalAccessFromFileURLs(false);
}
Flutter (例:flutter_inappwebview):
InAppWebViewSettings(
allowFileAccess: false,
allowFileAccessFromFileURLs: false,
allowUniversalAccessFromFileURLs: false,
)
- file:// スキームの悪用をブロックする
- ローカルファイルとデータベースの漏洩を防ぐ
JavaScript インターフェースを堅牢化する:
Native Android (Java):
webView.removeJavascriptInterface("interfaceName"); // Remove if not needed
// If required, only expose minimal @JavascriptInterface methods
Flutter:
未使用の JS ハンドラーを削除します。必要な場合は、addJavaScriptHandler(flutter_inappwebview)または JavascriptChannel(webview_flutter)内のロジックを安全に制限します。
- addJavascriptInterface() を介したリモートコード実行を回避する
- JS ブリッジが必要な場合は、WebMessagePort を使用するか、信頼できるオリジンを許可リストに登録する
追加の保護対策:
- 本番環境での WebView デバッグを無効にする: Native Android:
WebView.setWebContentsDebuggingEnabled(false);
Flutter (例:flutter_inappwebview):
InAppWebViewSettings(isInspectable: false, debuggingEnabled: false)
- セーフブラウジングを有効にする(API 26+): Native Android:
WebView.enableSafeBrowsing(context);
Flutter (例:flutter_inappwebview):
InAppWebViewSettings(safeBrowsingEnabled: true)
混在コンテンツを無効にし、ファイルアクセスを制限し、JavaScript ブリッジを安全にすることで、アプリの WebView 機能を安全に保ちながら、危険な WebView API に関連する主要な攻撃ベクトルを排除できます。
リンク
- DRD02-J. Do not allow WebView to access sensitive local resource through file scheme (CERT Secure Coding)
- DRD13. Do not provide addJavascriptInterface method access in a WebView which could contain untrusted content (CERT Secure Coding)
標準
- OWASP_MASVS_L1:
- MSTG_PLATFORM_6
- MSTG_PLATFORM_5
- OWASP_MASVS_L2:
- MSTG_PLATFORM_6
- MSTG_PLATFORM_5
- OWASP_MASVS_v2_1:
- MASVS_PLATFORM_2
- MASVS_PLATFORM_3
- OWASP_MOBILE_TOP_10:
- M8_2024