zoukankan      html  css  js  c++  java
  • WebView 安全之 addJavascriptInterface

    WebView是Android平台下的一个重要组件,通常用来在Activity中嵌入一个简单的浏览器,实现在线网页浏览的功能。比如下面代码实现访问Google页面:

    WebView webView = new WebView (R.id.webView1);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl("http://www.google.com");
    

    为了与Web页面实现动态交互,Android应用程序允许WebView通过WebView.addJavascriptInterface接口向Web页面注入Java对象,页面Javascript脚本可直接引用该对象并调用该对象的方法。

    这类应用程序一般都会有类似如下的代码:

    webView.addJavascriptInterface(javaObj, "jsObj");

    此段代码将javaObj对象暴露给js脚本,可以通过jsObj对象对其进行引用,调用javaObj的方法。
    结合Java的反射机制可以通过js脚本执行任意Java代码,相关代码如下:

    <script>
      function execute(cmdArgs) {
          return jsobj.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec(cmdArgs);
      }
    
      execute(someCmd);
    </script>

    当受影响的应用程序执行到上述脚本的时候,就会执行someCmd指定的命令。
    Android系统下许多应用程序(浏览器,微博等)使用webView进行界面展示,都有可能受到此问题的影响。
    攻击者可以通过诱使受害者打开恶意网页、浏览恶意微博或者向受害者发送恶意邮件等方式来利用此漏洞,获取用户敏感信息、控制用户系统。

    在Android <=4.1.2 (API 16),WebView使用WebKit浏览器引擎,并未正确限制addJavascriptInterface的使用方法,在应用权限范围内,攻击者可以通过Java反射机制实现任意命令执行。
    在Android >=4.2 (API 17),WebView使用Chromium浏览器引擎,并且限制了Javascript对Java对象方法的调用权限,只有声明了@JavascriptInterace注解的方法才能被Web页面调用。

  • 相关阅读:
    了解node.js
    RC4 in TLS is Broken: Now What?
    LDAP 在ubuntu14.04下的安装配置install and configure
    Bucking the stigma (留学生请摘掉有色眼镜看社区大学)
    SSL Labs: Increased Penalty When TLS 1.2 Is Not Supported
    PostgresQL中的NUlls first/last功能
    网页小工具集合
    T-SQL在线格式化工具
    sudoers文件解析
    Java提高篇——JVM加载class文件的原理机制
  • 原文地址:https://www.cnblogs.com/wytiger/p/10436045.html
Copyright © 2011-2022 走看看