Android WebViewのファイルとコンテンツへのアクセス許可

Android WebViewのファイルまたはコンテンツへのアクセス許可

説明

WebViewで allowFileAccess、allowContentAccess、allowFileAccessFromFileURLs、allowUniversalAccessFromFileURLs を不要なのに有効にすると、WebViewのコンテンツがローカルファイルやコンテンツプロバイダーのデータにアクセスできる場合があります。外部コンテンツと組み合わさると、アプリ内部のデータ漏えいにつながるおそれがあります。

想定される影響

  • ローカルファイルやコンテンツURIのデータ漏えい
  • WebViewを介した権限の境界の回避
  • XSSと組み合わさった機密情報の流出

対処方法

  1. ファイルやコンテンツへのアクセスが不要なら無効にしてください。
  2. 外部のWebコンテンツとローカルファイルへのアクセスを同じWebViewで扱わないでください。
  3. 必要なURIだけを明示的に提供し、Content Security Policyと入力検証を適用してください。

例

変更前

java
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setAllowUniversalAccessFromFileURLs(true);

変更後

java
webView.getSettings().setAllowFileAccess(false);
webView.getSettings().setAllowContentAccess(false);
webView.getSettings().setAllowUniversalAccessFromFileURLs(false);

解説:

  • 変更前: file:// や content:// へのアクセスを許可すると、読み込んだコンテンツがアプリのローカルファイルやコンテンツプロバイダーのデータにアクセスするリスクが高まります。
  • 変更後: setAllowFileAccess(false) と setAllowContentAccess(false) でファイルシステムとコンテンツURIへのアクセスを無効にし、ファイルURLからの汎用的なアクセスも無効にします。file:///android_asset と file:///android_res のアプリリソースには、ファイルアクセス設定とは別にアクセスできます。

参考資料