WebView使用漏洞
来源:互联网 发布:战地4破解软件 编辑:程序博客网 时间:2024/06/05 19:24
开发中有使用到WebView,使用过程中遇到一些比较坑的问题。这里总结一下,便于回头看,少走弯路。
说到WebView,这就牵扯到android 和 javascript的交互。
webSettings.setJavaScriptEnabled(true); //设置webview支持js
WebView使用中主要有三种漏洞:
任意代码执行漏洞
密码明文存储漏洞
域控制不严格漏洞
具体分析:
1.1 WebView 任意代码执行漏洞
出现该漏洞的原因有三个:
- WebView 中 addJavascriptInterface接口
- WebView 内置导出的 searchBoxJavaBridge_对象
- WebView 内置导出的accessibility 和 accessibilityTraversalObject 对象
1.11 addJavascriptInterface 接口引起远程代码执行漏洞
A. 漏洞产生原因—–
:::::::::::::::
》》JS调用Android的其中一个方式是通过addJavascriptInterface接口进行对象映射,所以,漏洞产生原因是:当JS拿到Android这个对象后,就可以调用这个Android对象中所有的方法,包括系统类(Java.lang.Runtime 类),从而进行任意代码执行。比如:可以执行命令获取本地设备的SD卡中的文件等信息从而造成信息泄露等。
:::::::::::::
B. 解决方案 ——
:::::::::::::
》》android 4.2版本以后在本地方法上加@JavascriptInterface注解以避免漏洞攻击
》》android 4.2版本以前采用拦截prompt()进行漏洞修复。1.12 searchBoxJavaBridge_接口引起远程代码执行漏洞
A. 漏洞产生原因—–
:::::::::::
》》在Android 3.0以下,Android系统会默认通过searchBoxJavaBridge_的Js接口给 WebView 添加一个JS映射对象:searchBoxJavaBridge_对象。该接口可能被利用,实现远程任意代码。
:::::::::::
B. 解决方案——
》》删除searchBoxJavaBridge_接口。
(通过调用该方法删除接口-removeJavascriptInterface() );
:::::::::::1.13 accessibility和 accessibilityTraversal接口引起远程代码执行漏洞
::::A. 漏洞产生原因
::::
》》 在Android 3.0以下,Android系统会默认通过accessibility 和 accessibilityTraversal的Js接口给 WebView 添加一个JS映射对象:accessibility对象 和 accessibilityTraversal对象。该接口可能被利用,实现远程任意代码。
:::
B. 解决方案
》》删除接口
1.2 密码明文存储漏洞
WebView默认开启密码保存功能 :mWebSettings.setSavePassword(true)
- 开启后,在用户输入密码时,会弹出提示框:询问用户是否保存密码;
- 如果选择”是”,密码会被明文保到 /data/data/com.package.name/databases/webview.db 中,这样就有被盗取密码的危险。
解决方案:
》》关闭密码保存提醒:mWebSettings.setSavePassword(false)
1.3 域控制不严格漏洞
- webView.getSettings().setAllowFileAccess(false); // 设置是否允许 WebView 使用 File 协议
- webView.getSettings().setAllowFileAccessFromFileURLs(true); // 设置是否允许通过 file url 加载的 Js代码读取其他的本地文件
- webView.getSettings().setAllowUniversalAccessFromFileURLs(true); // 设置是否允许通过 file url 加载的 Javascript 可以访问其他的源(包括http、https等源)
一句话说明就是:使用 file 域加载的 js代码能够使用进行同源策略跨域访问,从而导致隐私信息泄露。
- 最终解决方案:
- 对于不需要使用 file 协议的应用,禁用 file 协议;
// 禁用 file 协议;
setAllowFileAccess(false);
setAllowFileAccessFromFileURLs(false);
setAllowUniversalAccessFromFileURLs(false);
::::::::::::::::- 对于需要使用 file 协议的应用,禁止 file 协议加载 JavaScript。
// 需要使用 file 协议
setAllowFileAccess(true);
setAllowFileAccessFromFileURLs(false);
setAllowUniversalAccessFromFileURLs(false);
::::::::::::::::
// 禁止 file 协议加载 JavaScript
if (url.startsWith("file://") {
setJavaScriptEnabled(false);
} else {
setJavaScriptEnabled(true);
}
- WebView使用漏洞
- WebView使用漏洞
- WebView 使用漏洞
- Android:WebView 使用漏洞详解与解决方案
- Android webview使用漏洞案例解析
- Android中WebView使用漏洞详解
- Android:你不知道的 WebView 使用漏洞
- 你不知道的 Android WebView 使用漏洞
- 你不知道的 Android WebView 使用漏洞
- [置顶] 你不知道的 Android WebView 使用漏洞
- Android:你不知道的 WebView 使用漏洞
- Android:你不知道的 WebView 使用漏洞
- Android WebView 使用时需要注意的漏洞
- 再谈webview漏洞
- android webview填漏洞
- Android--webview 漏洞 解析
- Android WebView漏洞总结
- WebView的漏洞
- 练习 2017-08-13 将指定文件夹中的指定文件复制到指定位置并改名
- ANR总结
- JSX语法
- listview设置OnScrollListener分页加载,日夜间模式,判断无网用数据库显示
- 文件存储之:File,Cache,Sdcard,三种存储方式
- WebView使用漏洞
- Python多线程selenium垮浏览器测试
- 计算几何-常用几何函数(模板)
- Tomcat 配置
- 2017 08 13 小结
- JavaScript笔记
- 无阻塞脚本一延迟的脚本
- [SMOJ2078]勾股数
- 厦门应届生手续办理