説明
WebViewで allowFileAccess、allowContentAccess、allowFileAccessFromFileURLs、allowUniversalAccessFromFileURLs を不要なのに有効にすると、WebViewのコンテンツがローカルファイルやコンテンツプロバイダーのデータにアクセスできる場合があります。外部コンテンツと組み合わさると、アプリ内部のデータ漏えいにつながるおそれがあります。
想定される影響
- ローカルファイルやコンテンツURIのデータ漏えい
- WebViewを介した権限の境界の回避
- XSSと組み合わさった機密情報の流出
対処方法
- ファイルやコンテンツへのアクセスが不要なら無効にしてください。
- 外部のWebコンテンツとローカルファイルへのアクセスを同じWebViewで扱わないでください。
- 必要な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のアプリリソースには、ファイルアクセス設定とは別にアクセスできます。