博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android webview(三) addJavascriptInterface的安全问题
阅读量:6573 次
发布时间:2019-06-24

本文共 1054 字,大约阅读时间需要 3 分钟。

hot3.png

为javascript提供native接口的途径

  • Android WebView 提供一个addJavascriptInterface方法来为javascript创建一个JavaBridge.
例如给js提供一个showToast的方法:private static class JavaJs {    private Context context;    JavaJs(Context context) {        this.context = context;    }    @JavascriptInterface    public void showToast(String str) {        Toast.makeText(context, str, Toast.LENGTH_LONG).show();    }}webView.addJavascriptInterface(new JavaJs(this), "JavaJs");

安全问题

  • Api 17之前,在WebView为javascript提供了java对象之后, 可以利用javascript代码调用java的反射Api,进行一些hack操作,导致安全性问题.(<font color=red>注意: </font>低版本的WebView会自己添加一个searchBoxJavaBridge_对象,通常我们需要自己移除)
  • Api 17之后,WebView会禁止javascript调用没有添加@JavascriptInterface方法,从而避免上述问题.(<font color=red>注意: </font>推荐大家始终添加@JavascriptInterface,而不用关心Api版本,因为annotation缺失并不会导致ClassNotFoundException,而仅仅是被jvm忽略)

安全问题示例 (通过javascript卸载微信)

  • 通过反射可以干很多事情,比如类似于 UserInfo 这样的对象,如果他是单例的话,那么很容易可以取到用户的 用户名,邮箱,手机号 等信息.
  • 此处展示一个简单的页面,当通过WebView打开这个HTML,手机上的微信就会被卸载(当然前提是该app拥有root权限).
                    卸载微信 :)

可以参考 来实现一个安全的WebView.

转载于:https://my.oschina.net/fengheju/blog/673629

你可能感兴趣的文章
Android控件之HorizontalScrollView 去掉滚动条
查看>>
UVM中的class--2
查看>>
关于异常的合理处理方式
查看>>
javascript ES3小测试
查看>>
Android - Animation(二)
查看>>
Android6.0指纹识别开发
查看>>
Lucene简介
查看>>
Hibernate概述
查看>>
任务调度器配置文件
查看>>
【JavaScript吉光片羽】--- 滑动条
查看>>
ORACLE 存储过程异常捕获并抛出
查看>>
arcgis api for js之echarts开源js库实现地图统计图分析
查看>>
Microsoft JDBC Driver 4.0 for SQL Server
查看>>
delphi2010中FastReport的安装方法
查看>>
总结新浪friendship接口
查看>>
HDU 4293 Groups (线性dp)
查看>>
博客园博客美化相关文章目录
查看>>
excel中如何批量将所有的网址设为超链接
查看>>
Nodejs学习笔记(十二)--- 定时任务(node-schedule)
查看>>
加密算法使用(五):RSA使用全过程
查看>>