対策
これらの問題について、アプリケーション開発者はどのような対策を行うべきでしょうか。
特定のURLのみに限定する
もしWebViewクラスで読み込むURLが固定のものや特定ドメインのものなど、限定されたものだけを想定しているのであれば、それのみ許可するように実装すべきです。
特にWebView#addJavascriptInterfaceを使用する場合は、このような制限を行わないとどこからでもJavaScript経由でメソッドを呼び出されてしまいます。
http/httpsプロトコルのみに限定する
アプリケーションによってはURLを限定することができない場合もあります。そのような場合、WebViewクラスで読み込むURLのプロトコルをhttp/httpsに限定することにより、先の例で紹介したfileプロトコルを使用したローカルファイルの取得を防ぐことができます。
これ以外にも、そもそも外部からURLの入力を受け付けないという方法やJavaScriptを有効にしないなど対策方法は考えられます。作成するアプリケーションの実装に合わせて、受け取るURLの検証などの対策を行う必要があります。
まとめ
WebViewクラスはアプリケーションを開発する上で便利なクラスで、Webサイトや各Webサービスとの連携といったことを考えた場合、欠かすことのできないクラスです。しかし、その使い方を誤ったり仕様を把握していなかったりすると、脆弱性の元になります。
なお、Javaセキュアコーディングスタンダードにはこれに関連したルールがあります。ルールのサンプルコードとは直接関係はありませんが、考え方は当てはまるのではないかと思います。
こちらも併せて参照してください。