Android WebViewのJavaScriptの有効化

Android WebViewのJavaScriptの有効化

説明

WebViewでJavaScriptを有効にすると、読み込んだページでスクリプトを実行できます。信頼できないURL、ユーザー入力で組み立てたHTML、公開されたJavaScriptインターフェースと併用すると、XSS、セッションの窃取、アプリ内部のAPIの悪用につながるリスクが高まります。

想定される影響

  • WebView内でのXSSの実行
  • Cookie、トークン、ローカルストレージの値の漏えい
  • addJavascriptInterface と組み合わさったアプリ機能の悪用

対処方法

  1. JavaScriptが不要なWebViewでは無効にしてください。
  2. 必要な場合は信頼できるドメインだけを読み込み、ナビゲーションを制限してください。
  3. ユーザー入力をHTMLとして挿入せず、適切にエスケープしてください。

例

変更前

java
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(userControlledUrl);

変更後

java
webView.getSettings().setJavaScriptEnabled(false);
webView.loadUrl("https://example.com/help");

解説:

  • 変更前: スクリプトはWebViewに読み込まれたページのコンテキストで実行されます。
  • 変更後: JavaScriptが不要なら setJavaScriptEnabled(false) を使います。

参考資料