...
For API level JELLY_BEAN or below, allowing an app to use the addJavascriptInterface
method with untrusted content in a WebView
leaves the app vulnerable to scripting attacks using reflection to access public methods from JavaScript. Untrusted content examples include content from any HTTP URL (as opposed to HTTPS) and user-provided content. The method addJavascriptInterface(Object, String)
is called from the android.webkit.WebView
class. Sensitive data and app control should not be exposed to a scripting attack.
...
Code Block | ||
---|---|---|
| ||
WebView webView = new WebView(this); setContentView(webView); ... class JsObject { @JavascriptInterface public String toString() { return "injectedObject"; } } webView.addJavascriptInterface(new JsObject(), "injectedObject"); webView.loadData("", "text/html", null); webView.loadUrl("javascript:alert(injectedObject.toString())http://www.example.com"); |
JavaScript can now control the host. Java reflection could be used to access any of the public methods of an injected object, using the permissions of the app.
...