説明
WebViewでJavaScriptを有効にすると、読み込んだページでスクリプトを実行できます。信頼できないURL、ユーザー入力で組み立てたHTML、公開されたJavaScriptインターフェースと併用すると、XSS、セッションの窃取、アプリ内部のAPIの悪用につながるリスクが高まります。
想定される影響
- WebView内でのXSSの実行
- Cookie、トークン、ローカルストレージの値の漏えい
addJavascriptInterfaceと組み合わさったアプリ機能の悪用
対処方法
- JavaScriptが不要なWebViewでは無効にしてください。
- 必要な場合は信頼できるドメインだけを読み込み、ナビゲーションを制限してください。
- ユーザー入力をHTMLとして挿入せず、適切にエスケープしてください。
例
変更前
java
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(userControlledUrl);
変更後
java
webView.getSettings().setJavaScriptEnabled(false);
webView.loadUrl("https://example.com/help");
解説:
- 変更前: スクリプトはWebViewに読み込まれたページのコンテキストで実行されます。
- 変更後: JavaScriptが不要なら
setJavaScriptEnabled(false)を使います。